暑期深度学习实训笔记
本笔记包含深度学习的整体框架的summary:
- 机器学习的大概流程
- 得分函数
- 损失函数
- 寻参K近邻与交叉验证
- 梯度下降
- 神经网络的基本流程
目录
(一) 机器学习的大概流程
-
数据 :
收集数据,加定标签 -
训练 :
训练分类器,完成分类任务 -
测评 :
测试、评估当前分类器效果
(二) 得分函数
f(x,w)= 每个类别的得分值。
- x:输入
- w:参数
score function such as
f(x,w)=w∗x+b
输入高维向量经过得分函数得到一个对应于每个类别的得分数值,分数越高则代表属于该类别的概率越大。
一组得分值可经过e指数放大差别,再归一化得到一个[0,1]的概率值;也可以通过s型神经元σ函数映射到[0,1]。
(三) 损失函数
得分函数的分类效果好坏需要有损失函数来评估调整。得分函数分类得分的结果是由score function的 w 参数决定的,输入的 x 通过合理的 w 得到的得分才能更接近于正确的分类。
Loss function的值越大代表分类效果越差,越小越好,为0是理想状态。在softmax分类器中概率越接近于0,loss值越大;概率接近于1,loss值越小。
-
softmax函数:一组得分值可经过e指数放大差别,再归一化得到一组[0,1]的概率值。
(四) 寻参的K近邻与交叉验证
(一) K近邻(KNN)分类算法,简单的机器学习算法之一。
![]()
(1) k值参数不同,分类结果不同。若K=3,由于红点所占比例为2/3,绿点将被赋予红色类,若K=5,由于蓝点比例为3/5,因此绿点被赋予蓝色类。
(2) 给定一个训练数据集:对新的输入实例,在数据集中找到与该实例最邻近的k个实例,若这k个实例中大多数属于某个类,则把输入实例分为这个类。
(3) 算法中,当训练集、距离度量、k值和分类决策规则确定后,对于任何一个新的输入实例,它所属的类唯一确定。例如图像处理对动物的分类中,取L1度量,得到度量值取前10个(k=10),根据10个当中的标签类别比例,来得出分类结果。
(二) 数据可分为train和test,数据量并不大很宝贵。充分利用数据可采用交叉验证。
(1) 将数据分为train、validation、test。做法为:假设5重交叉验证,将训练集分为5份,选择其中4份作为train,另一份作为val,train经过5次同时也val经过5次,将5次的平均作为该参数下的val结果。
t {1/2/3/4} ——— v {5} t {1/2/3/5} ——— v {4} t {1/2/4/5} ——— v {3} t {1/3/4/5} ——— v {2} t {2/3/4/5} ——— v {1} (2) 然后对于不同的参数,重复这样的训练。选择准确率最高的参数作为最后的参数。在训练过程中不test,最终才test。
(五) 梯度下降
- 优化loss function,达到最优。
- 跟随梯度去寻找山坡的最低点,梯度是山坡的一个最陡峭的方向,我们沿着这个最陡峭的方向可以最快的走到山坡的最低点。
- 沿着梯度的反方向去走,这就是梯度下降。由于梯度方向是使得LOSS值增加幅度最大的方向,所以为了LOSS能减少就要朝着梯度下降的方向去寻找最小点。
- 多次迭代梯度下降更新参数以致收敛,一次沿着这个梯度下降的方向走多远叫做学习率。学习率对最优化问题起着决定性的作用,因为如果学习率太大有可能有跳过最低点才寻到的不是最小值,而学习率太小又会使得网络收敛太慢。
(六) 神经网络的基本流程
-
1、前向传播
得分 →
loss → 正则化惩罚 →LOSS 正则化就是对权重参数进行惩罚,目的就是找到一组更平滑的参数项。正则化项的结果就是对于不同权重参数
W 进行不同力度的惩罚,惩罚也就是增加其LOSS 值。正则化对于整个分类模型来说非常重要,可以很有效的抑制了过拟合现象。-
LOSS :即损失函数的最终版公式。LOSS 是由两部分组成的,一部分是得分函数对应的loss 值;另一部分是正则化惩罚项值。
正则化,防止过拟合。λ在这里我们称做正则化参数。若λ变大说明目标函数的作用变小,正则化项的作用变大,对参数的限制能力加强,这会使得参数的变化不那么剧烈,减少代价函数对特定参数的敏感性。参数代入正则化后的代价函数,代价值比未正则化时少了。例如2个维度的参数是10和1000,相差990,都乘以1/2变成5和500,相差495。
-
2、反向传播
- 对于X,Y,Z若干个输入来说分别对于LOSS值做了多大的贡献,链式求导法则。
- 加法门 : 均分
- 乘法门 : 互换
- MAX门 : 取最大
3、更新参数
1.非线性的函数:**函数。σ函数在某些位置斜率接近于0,在反向传播链式求导过程中梯度为0,难以更新。因此,用MAX函数代替。
2.drop-out防止过拟合。Dropout的出现很好的可以解决这个问题,每次做完dropout,相当于从原始的网络中找到一个更瘦的网络,让某些指定的神经元不参与计算和更新。让某个神经元的**值以一定的概率p,让其停止工作。 test用全部神经元,训练只用部分。不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重需要保留仅仅只是暂时不更新而已,因为下次样本输入时它可能又要工作了。
3.权重初始化不可以全部设置为0,因为这样会导致各项参数会沿着相同的方向更新。
(七) 结尾
深度学习的基础为神经网络,基本上它的框架理清了。
2017.8.7