wx 搜索 gzh 司南锤
,回复 子豪兄231笔记
可获取笔记文件(pdf+doc)
文章目录
- 学习链接:
- - 斯坦福大学公开课
- - 计算机视觉发展历史
- - 图像分类算法
- - 线性分类、损失函数与梯度下降
- - 神经网络与反向传播
- - 卷积神经网络
- - 可视化卷积神经网络
- - 训练神经网络 (一)
- - 激活函数
- - 权重初始化
- - Batch Normalization (批归一化)
- - 总结
- - 训练神经网络 (二)
- - 优化器
- -- SGD
- -- SGD + 动量 【Momentum】
- -- Nesterov Momentum 【NAG】
- -- AdaGrad
- -- RMSProp (Leakly AdaGrad)
- -- Adam( almost)
- -- Adam (full form)
- - 学习率
- -- 二阶优化法(牛顿法)
- - 防止过拟合
- - 模型集成
- - 正则化
- -- Dropout
- - 数据增强 (data augement)
- -- drop connect
- -- Fractional Max Pooling
- -- Stochastic Depth
- -- Cutout
- - 超参数选择
- - 总结
- - 卷积神经网络工程实践技巧
- -- 卷积
- -- imcol
- -- FFT
- - 迁移学习与fine tuning
- - 迁移学习
- - 卷积神经网络结构案例分析
- . LeNet-5
- . AlexNet
- . ZFNet (可视化理解反卷积)
- .VGG
- .GoogleNet
- .ResNet
- .NetWork in NetWork
- - 残差块的质量大于数量的重要性
- - 分形网络
- - 全附庸模型
- - 可部署移动设备
- - 元学习 (AI自己训练网络)
- - 总结
- - 深度学习硬件算力基础 (GPU & TPU)
- -- 加速推断的算法
- -- SqueezenNet
- - 深度学习软件编程框架
- - Pytorch
- - TensorFlow
- - Keras (对小白用户最友好,简单易上手)
- - 建议
- - 循环神经网络
- -- 编码器 & 解码器
- -- RNN梯度消失与梯度爆炸
- - LSTM
- -Transformer
- - 总结
学习链接:
【子豪兄】精讲CS231N斯坦福计算机视觉公开课(2020最新)_哔哩哔哩_bilibili
- 斯坦福大学公开课
- 计算机视觉发展历史
猫对边缘视觉敏感的研究:
ImageNet:
前置知识:
- 图像分类算法
CIFAR10数据集:
L1距离:
将两个位置对应的地方直接相减 (曼哈顿距离)
LI距离python代码实现:
LI距离与L2距离对比:
- L1距离对坐标系角度变化比较明显
- L1距离适用于坐标系明确的情况:薪水和出勤
KNN图像分类的缺点:
- 运算比较慢
- 距离作为划分的特征不够明显
- 随着维度增加计算量快速增大
- 线性分类、损失函数与梯度下降
铰链损失函数:
正则化:
Softmax 分类器:交叉熵损失函数
导数:
数值解和解析解两种方式:
梯度下降算法:
是损失函数下降,不是梯度本身下降
SGD算法:
- 一般选择2的指数作为批次
- 神经网络与反向传播
类比自然神经元:
反向传播:
梯度流的形式:
向量的分类:
- 卷积神经网络
卷积核:
- 使用卷积核个数有多少,通道就有多少
- 卷积核的作用是提取特征
池化:
- 使得神经网络具有平移不变性
- 减少参数量
- 防止过拟合
- 可视化卷积神经网络
-
提取图像编码参数,进行降维之后进行可视化
-
遮挡实验
- 反卷积方法
- 训练神经网络 (一)
- 激活函数
- 二分类可以使用sigmoid
数据预处理:
- 权重初始化
- 权重设置为同一个数? 不行。这样每一个神经元的完全相同。
- 参数随机初始化?
该种初始化会导致梯度消失。
- Xavier初始化
根据输入的维度进行确认。
在relu上不成立,该方法前提要求w和x关于0对称,但是relu>=0
- Kaiming/MSRA Initialization 何凯明提出初始化方法 【针对ReLU】
- Batch Normalization (批归一化)
测试时用训练全局的方差和均值的的数据代替批处理的。训练里面使用的每batch的一批的。
- 总结
- 训练神经网络 (二)
- 优化器
- 传统随机梯度下降优化的缺点:
竖直方向上存在冗余的梯度
陷入局部最优点
– SGD
– SGD + 动量 【Momentum】
– Nesterov Momentum 【NAG】
优化:先看动量下一步根据下一步再计算梯度
– AdaGrad
随着累加分母会变的越来越大,更新量会越来越小。
– RMSProp (Leakly AdaGrad)
引入了衰减因子,类似于动量中的ρ
– Adam( almost)
综合考虑了第一和第二动量
– Adam (full form)
- 学习率
- 如何评价一个好的学习率?
– 二阶优化法(牛顿法)
一阶导数除以二阶导数,无需设置学习率
海森矩阵有时候计算量比较大,所以不普遍应用,参数爆炸
采用拟牛顿法解决上述的问题。
- 防止过拟合
提前停止
- 模型集成
采用训练过程中不同时刻的模型进行集成;多个局部最优点进行集成学习
- 正则化
– Dropout
-
随机掐死一半的神经元,有效防止过拟合
每个神经元都能够独当一面,减少神经元中的联合依赖和适应性;起到模型集成的效果;找到了主要矛盾,起到了稀疏性 -
测试阶段不需要该操作,测试的时候需要补偿随机的P(0.5)
p=0.5能够使得各个神经元独立平等,不会出现部分神经元比重过大的情况,对应了 2 n 2^n 2n个模型。缺点是训练时间增加了。 -
有效性的解释:
- 数据增强 (data augement)
- 相当于增加了数据;
- 图像裁剪,水平翻转,颜色的偏移和翻转,
– drop connect
- 随机掐死某一些参数
– Fractional Max Pooling
- 随机池化,训练过程中随机生成,大小不确定
– Stochastic Depth
- 随机掐死一些层(resnet),可以使得网络的深度更大。
– Cutout
- 扣掉图片的一部分
- 将不同的物品的图片掺在一起
- 超参数选择
- 检验初试损失函数
- 在小数据集上尝试过拟合
- 总结
- 卷积神经网络工程实践技巧
– 卷积
- 卷积核本质是二维信号滤波器
- 卷积的本质是提取图像不同频率的特征
加速卷积运算的方法:
– imcol
– FFT
- 迁移学习与fine tuning
- 迁移学习
借助预训练模型,泛化自己的数据集。借助冻结的模型进行特征的提取。
- 数据库太小的处理方法?
- 卷积神经网络结构案例分析
. LeNet-5
. AlexNet
- 在LeNet的基础上进行改进
. ZFNet (可视化理解反卷积)
.VGG
.GoogleNet
- inception模块, 不同类型的卷积层最后叠加
.ResNet
.NetWork in NetWork
- 残差块的质量大于数量的重要性
- 分形网络
- 全附庸模型
- 可部署移动设备
- 元学习 (AI自己训练网络)
- 总结
- 深度学习硬件算力基础 (GPU & TPU)
英特尔神经棒:
能够实现嵌入式调用神经模型。进行边缘计算,对本地的硬件的要求比较高。
模型尺寸过大的危害:
- 主要能耗在于内存数据的读取
– 加速推断的算法
– SqueezenNet
- 深度学习软件编程框架
- Pytorch
- 加下划线参数本身会被重置为0,否则只是输出返回0
Dataloader:
预训练模型:
可视化工具:
构建动态计算图:
other:静态图
- TensorFlow
- Keras (对小白用户最友好,简单易上手)
- 建议
- 循环神经网络
目前已经学习过两大类神经网络:全连接神经网络,卷积神经网络 (视频)
马上学习:RNN(处理序列数据)
RNN时间维度全局共享,CNN空间维度的全局共享
– 编码器 & 解码器
– RNN梯度消失与梯度爆炸
训练时间越长,越有可能出现。
- LSTM
C t C_t Ct为长期记忆,贯穿时间轴,与神经元内部的交互信息较少
- 选择被遗忘的信息
- 选择被保留的信息
- 更新CELL中的信息
- 短期记忆为每个小模型的输出
-Transformer
- 总结
*感谢子豪大佬的精彩视频讲解❀