今天差点删了印象笔记上的cs231笔记,搬运到csdn上做个备份
L1 稀疏性
L2 整体
softmax
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d18156a2872591f47efde147ecf24cae.png)
熵与信息增益
简单谈谈Cross Entropy Loss
learning rate是第一个要检查的超参数
batch size——抽样计算损失函数,减小计算
通过数值梯度来检验解析梯度
maxpooling使用较多:保留最显著的激活
size of feature map: (i+2p-k)/S+1
- 卷积核参数计算:
反向传播
零基础入门深度学习(3) - 神经网络和反向传播算法
反向传播翻转的推导(CNN)
激活函数
- sigmoid
- 非零均值
- 饱和(梯度消失)
∂
σ
∂
x
\frac{\partial \sigma}{\partial x}
∂x∂σ在饱和区域会接近于0,链式求导乘上这一项会接近于0
- tanh
饱和 - ReLU
用得最多
数据预处理
中心化centralized(均值)+归一化normalized(标准差)
原因:对参数微小变化的敏感程度↓
图像方面只做均值(多个通道,所有训练样本的均值)
权重初始化
不能都相等等于0 ==> 得到完全相同神经元,学习不到不同的特征
w很小 ==> 梯度消失,由于本地梯度
∂
(
w
x
+
b
)
∂
x
=
w
\frac{\partial (wx+b)}{\partial x}=w
∂x∂(wx+b)=w很小,会导致很多个w相乘链式法则求得的梯度很小
w很大 ==> 总是到饱和区
目前的优化方法 —— Xavier,输入和输出的标准差一致,也就是输入多的时候设置的标准差越小。如果用relu的话,就是除以2(因为干掉了一半神经元)
参考:
怎么理解梯度弥散和梯度爆炸
深度学习梯度消失于梯度爆炸
batch normalization
让神经网络在训练时,每一层都有很好的高斯分布
有N个训练数据,每个D维,则在每一个维度上单独计算均值和方差,进行normalization
在FC或卷积层之后,非线性环节之前
卷积层之后——每个feature map拥有一个均值和一个方差
在normalization的结果上,加上额外的缩放和平移因子(经过学习得到)
会使训练更容易,且起到了正则化的效果——每次随机采样batch,同一个x在每次将是不同的值,相当于加入了扰动
测试时,不使用测试数据的batch mean和variance,而是使用训练阶段得到的固定
babysitting the learning process
数据预处理——选择网络结构——初始化——正则项
3.0xx——初始损失函数
- lr
最重要,最先调整。
1e-6,loss几乎不变,是设置得太小了
1e+6,loss到NaN,是设置得太大了
一般设置到1e-3到1e-5 - 超参数优化
cross-validation
loss超过初始值的三倍即停止训练,是不合适的参数
lr调整时采用乘除采样而不是均匀采样
一次搜索不超过2、3、4个超参数
超参数的网格搜索与随机搜索(后者更优)↓
神经网络的容量