深度学习入门--阅读感悟

前提:此文全是自己学习的理解,肯定有错误的地方,或者直接就是理解错了,走了歪路。

书籍:深度学习入门–基于python的理论与实现 ( 斋藤康毅著 )

初读感受:通过各种层的叠加,尽管不知道为什么经过这些处理,会对图像 ( MNIST集 )产生这么高的辨识能力,能够通过梯度这一数理上的概念使各层不断学习以提高准确度。是图形通过像素和数学发生关系吗?但是毫无疑问的是,准确度确实在一步步的提升,这些层的作用对于初读之后的我还像黑盒一样。还需要不断研读,搞清楚他们的作用。或者本来深度学习的层叠加产生的效果就是让人脑无法理解的?

再读感受

完整网络
上图是一个有推理和学习的神经网络,将其分为三段进行分析

如下图
在这里插入图片描述

①:

  1. 输入层–图像 将 每个像素算作一个神经元,里面包含RGB,灰度值等信息。比如MNIST集中每张图片是28*28,所以图集中一张图就输入784个神经元。

  2. 每层初始权重的设置:为了抑制过拟合,提高泛化能力,要使用权值衰减的技巧。权值衰减就是以减小权重参数的值为目的的学习的方法。要尽量开始时为较小的值,但设置为0则不能正常学习( 权重为0反向传播时会出问题 ),所以直接设置为标准差为0.01的高斯分布值 0.01 * np.random.randn(10,100)

②:

a.

从左到右:
第一层:Affine() 加权总和层
第二层:sigmoid() 激活函数层
第三层:Affine() 加权总和层
第四层:sigmoid() 激活函数层
第五层:Affine() 加权总和层

Affine()前都是有权重计算,sigmoid()层都是对加权总和值的转换

权重是各信号神经元重要性的反映,权重越大,对最后结果的影响越大。

用sigmoid()或者ReLu()做激活函数是为了平滑性
从感知机可以得出是与非的结果,不断训练可以让划分越来越准确在这里插入图片描述
但是最大的问题就是,在日常生活中很多时候是无法给出一定的对立关系的,所以如果训练识别猫的模型只能给它猫的照片,即肯定一侧的数据,可能会使如下情况发生
在这里插入图片描述
所以感知机向神经网络转变的关键点就是激活函数的变化,将是与非转变为好与坏,即这个图片有多像猫,而不是这张图片是不是猫。

b.

第②部分结束之后得到的是得分,即这张图片对应0-9这十个数字,更像谁。得分越高证明这个神经网络下的匹配度越高。

到这里神经网络的推理部分就结束了。

如果是用的高斯分布的初始权重,我觉的推理出来的结果可能和正常结果相差特别大。这边也滋生了一个我最大的疑问。

③:

a.

第③部分是学习的重要部分

将得分传入softmax层,正规化和统一化之后得出0-1之间的数,这边就是10个数,而且他们的和是1,即可以看成是概率的概念。我的理解是这个图片对应每个数字的概率,概率越大证明越有可能是这个数。

注意:为什么推理到②就结束了呢?
因为softmax层并不会改变得分多少的排列顺序,得分越高,相应的概率也就越大。softmax层这边是为了和后面的损失函数交叉熵函数配合使用,即softmax-with-loss

b.

学习数据中监督数据是one-hot形式,即只有正确的对应项是1,其他都是0
交叉熵函数输出的误差的是由正确标签所对应的输出结果决定的,正确解经过了softmax层后的输出结果越大,经过该损失函数后值越小,也就是误差越小。

c.

该模型的结构就是推理+学习来不断提高准确率

学习目的:让损失函数值更小
学习方法:随机梯度下降法,使神经网络找到权重和偏置的最优参数。

SGD随机梯度下降法如何实现
首先在用数理计算的方法便于理解,梯度指示的方向是各点函数值减少最多的方向,虽然梯度的方向不一定指向最小值,但是沿着它的方向能最大限度地减少函数的值。所以,在寻找函数最小值的位置时,以梯度为线索,决定前进的方向。

通过不断沿梯度方向前进,逐渐减小函数值的过程就是梯度法。

而对随机选取的小批量数据进行的梯度下降法,就是随机梯度下降法(神经网络中参数太多,小批量可以加快更新速度)。

神经网络的梯度:损失函数关于权重参数的梯度。即
ϑ L ϑ W = ( ϑ L ϑ w 11 ϑ L ϑ w 12 ϑ L ϑ w 13 ϑ L ϑ w 21 ϑ L ϑ w 22 ϑ L ϑ w 23 ) \frac{\vartheta L}{\vartheta W} = \begin{pmatrix} \frac{\vartheta L}{\vartheta {w_{11}}} & \frac{\vartheta L}{\vartheta w_{12}} & \frac{\vartheta L}{\vartheta w_{13}} \\ \\ \frac{\vartheta L}{\vartheta w_{21}} &\frac{\vartheta L}{\vartheta w_{22}} & \frac{\vartheta L}{\vartheta w_{23}}\\ \end{pmatrix} ϑWϑL=ϑw11ϑLϑw21ϑLϑw12ϑLϑw22ϑLϑw13ϑLϑw23ϑL

权重w中任意一个发生变化,损失函数的值都可能发生变化,即②的得分以及softmax层的概率都会发生变化,观察 ϑ L ϑ W \frac{\vartheta L}{\vartheta W} ϑWϑL就可以知道权重w时向正方向还是负方向变化会使损失函数L变小。

如下, η {\eta} η学习率,即决定每次权重参数的更新量。 w w w向偏导方向变化,变化程度由 η {\eta} η控制,当找到"洼地"的时候,偏导趋于0,相应的变化也就停止了,代表可能找到了最小值。
w 11 = w 11 − η ϑ L ϑ w 11 w_{11} = w_{11} - {\eta}{\frac{\vartheta L}{\vartheta w_{11}} } w11=w11ηϑw11ϑL

基于数理计算求梯度计算非常低效,每次要有众多的权重参数要参与到求梯度,非常复杂,所以就可以使用误差反向传播法提高效率,具体看书即可。
使用softmax-with-loss这样的组合(softmax+交叉熵误差)也是为了反向传播之后得到类似 ( y 1 − t 1 , y 2 − t 2 , y 3 − t 3 ) (y_1-t_1,y_2-t_2,y_3-t_3) (y1t1,y2t2,y3t3)这样漂亮的结果,即神经网络输出与监督标签的误差高效的传递给前面的层。

学习中最大的疑问

问题:经过加权相加再经过激活函数的组合到底在怎么发挥作用?换句话说就是中间的隐藏层它的作用是什么?

我的思考
用高斯分布的权重做初始值,图片的各种特征经过一次加权相加激活,加权相加激活后的正确项得分可能非常低,导致损失函数值非常大,此时只需要求出各权重的梯度,更新权重。
也许加权相加再激活只是为了随意得出一个结果,这个结果一开始也不是为了求图形中的数字,它也不管输入是什么,它只是将图片的像素神经元做了一次处理,然后得出一个他也不知道干嘛用的结果,但是当监督标签出现之后,他这样的结果表现的很差,也就是正确项得分太低,他自己肯定是不在乎的。
但是我们知道我们的目的是提高准确度,这也就是我们要设置学习,让隐藏层里的权重参数进行调整,所以隐藏层里的工作对我们来说就是黑盒,里面的作用和参数调整我们也不得而知,但是唯一知道就是他会越来越好。
至于很多层一起用可能是为了让里面的参数更多,做的变换更多,内部更复杂,更便于描述图片,从而使准确度上升,或者可能一层没办法描述非线性问题,两层以上才能描述非线性问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值