<p>深度学习入门视频-唐宇迪 (笔记加自我整理)</p>
<p>深度学习 第二章 神经网络</p>
<p>本节主要说下神经网络中几个关键词</p>
<p>1.梯度下降</p>
<p> 梯度下降是一种求导方式,一般情况下是输入训练集的数据去学习规则,也就是得分函数,即模型,输入的数据经过模型得到的结果作为输出,怎么评价输出的结果是不是我们需要的以及有多接近我们的期望,这时候就需要损失函数loss来表示,预期的结果和通过模型得到的结果之间的差距就是损失函数。如何能快速的找到最合适的一组参数,也就是怎么样的模型,最能解决我们的预期呢,最常用的方式就是梯度下降。</p>
<p> 就像一个人在山顶上往山下走,梯度就是变化最快的方向,一般梯度是正向的,而我们往山下走,所以会沿着梯度的反方向迭代更新自己的下山方向。梯度只表示一个方向,但是这个方向要走多少,这个概念一般叫学习率,也就是步长,可以理解为走一步走多长,一般情况下我们都是采用小的步长,多走几次,走到山下,也就是loss值最小的地方。</p>
<ul><li>目标:找到山坡最低点
<ul><li>套路:小学习率,大迭代次数</li><li>代码:</li></ul></li></ul>
<p> <img alt="" height="190" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-08df374e6f6e317073e711b64b31ceb5.png" width="592"> </p>
<ul><li>批处理</li></ul>
<p> 批处理这个概念,主要是针对梯度下降更新时使用的数据量来说的,可以有三种选择,比如一次梯度的更新使用全部训练集数据,这样计算量大速度很慢,但是比较准确;也可以一次梯度更新只使用一个样本数据,这样速度快但是不准确,万一这个样本是异常值呢,而且每个样本更新的方向都不一样,但是从整体看最终趋势还是会往一个方向更新,但是从细节看每次更新的方向不能保证在一个方向上;所以为了兼顾速度和准确性,出现了批处理,一次梯度的更新使用一批数据,数量需要自己指定,这样计算量会小一些,梯度的方向会更准确一些,更接近整体下降的趋势。</p>
<p> 由于是计算机处理,所以一般都是采用2的整数倍(计算机二进制存储数据),批处理兼顾计算量和梯度方向的准确性。</p>
<ul><li>数值:通常是2的整数倍(32,64,128)</li><li>原因:
<ul><li>如果只使用一张图像进行迭代,该图像可能是噪音或离群点,导致更新效果不好;</li><li>在兼顾速度和效果的条件下,采用批处理,尽可能每次迭代朝着最好的方向</li></ul></li><li>可视化效果 </li></ul>
<p> <img alt="" height="271" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-fe787eb956a341b36652d6df02164701.png" width="623"> </p>
<p>2.学习率</p>
<p> 学习率就是在知道了梯度的方向,那下一步要走多长,就是由学习率控制的,学习率大下一步走的比较远,学习率小下一步走的比较近。我们想要的目标是找到loss的最低点,如果学习率过大,可能直接越过了最低点,loss值的表现是从大到小,再从小到大的变化;如果学习率过下的话,一步走不了多远,在我们设定走了多少之后,还没有走到最低点,计算速度慢,所以学习率的大小很关键,在实际中需要看loss值来调整,一般可以采用 0.1, 0.01,0.001, 0.0001等。</p>
<p> epoch是指这个训练集数据会被使用多少次,机器学习的使用中一般训练集就使用一次,深度学习最终需要得到的是大量的参数,就是权重矩阵,所以一般采用的方式是训练集整体多次使用,这点和机器学习建模的时候有一点点区别。</p>
<p> batchsize就是指批处理的数据量,就是一次梯度下降或者说参数更新,需要给定多少个样本。</p>
<p> 下面loss表示损失函数,给定高的学习率时,黄色线,损失函数loss会随着训练集迭代次数的增加越来越大,说明成功越过了最低点;给定很低的学习率,蓝色线,损失函数的变化会比较慢,一直没有收敛到平滑曲线,也就是一直没有到最低点;给定合适的学习率,绿色线,损失函数loss收敛的比较快,几次迭代就到了最低点,这样我们就达到目标了。</p>
<ul><li>epoch:整个训练集循环迭代次数</li><li>batchsize:100个(举个例子,实际还是2的倍数),5万的数据需要迭代500次 |
|