Machine-Learning to Deep-Learning
整理于udacity免费deep learning course
softmax function:
这是一种scores -> probability [0,1] 的function
那么scores可以是neural network 的final output
借用一张udacity上deep learning的图:
那么,如果 我把scores统统 *10 ,效果会如何呢? -> probability 会接近1的更接近1 接近0的更接近0
如果 我把scores统统 /10 ,效果会如何呢? -> probability 会更加normal ditribution
想想看 ,在一开始 我们并不希望他们的probability很明显,而到了训练后期,我们希望他们很明显,对不对?
one hot-encoding:
ex:我们有5个labels ,那么如果预测结果为label=2 ,那么表示方法应该是[0,1,0,0,0]
cross entropy:
embeddings: 用于解决太多Labels ,好多0 ,无效率的情况
D用于衡量s(y)和L的distance,
D(s,L) != D(L,s),因为log的存在
上图是到现在为止的回顾,那么这一整套动作称为:
multinomial logistic classification
MInimizing Cross Entropy:
这个就是Training Loss了,它是平均了 每一个s和L的distance之和。 我们想要这个Training Loss尽量小,这其中可能要调整许多参数值已达成最小,方法如下:
Gradient Desent:沿梯度方向,快速到达最小值0。
Testing Data / Validation Data / Training Data
根据上图,也就是说 将TestSet中的一部分作为Test Data 不用它进行测试,剩余的TestSet做Cross Validation,当确定好一切参数时,用test做最后的验证
如果所不留这一部分testData,而是所有都做Validation,就没有最后的真的test了。
Cross Validation可以防止overfitting,所以越多的Validation set,越精确。同时,越多的TestData,噪声越小
那么哪种可以算是噪声呢?
如果我们有3000数据,规定30rules,那么但凡增长减小率小于1per都属于noise。即<30个改变其label
Stochastic Gradient Descent(SGD)
批量梯度下降:
得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据,如果m很大,那么可想而知这种方法的迭代速度!!所以,这就引入了另外一种方法,随机梯度下降。
(1)批量梯度下降---最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小。
(2)随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。
Learning Rate
学习速率并不是越高越好,低速率优势反而能取得更好效果
Parameters
SDG有许多Parameters可以改变
AdaGrad可以使问题简化一些,前面3个参数可以去掉,
自适应梯度(adaptive gradient)[3]是基于梯度的优化方法(like SGD)