一天搞懂深度学习—学习笔记1

2019-04-15 17:38发布

Introduce of deep learning 1.问题展示
正常情况下,输入为‘cat’输出为一张猫的图片;而我们研究的内容是输入一张猫的图片,输出‘cat’。f(‘cat’) = a pic of cat,我们研究f(‘a pic of cat’)=‘cat’。 为了达到上述效果,我们需要定义一系列函数,优化函数有关参数,然后在定义的函数中选出最适合的函数。就是这么简单的几步,这就是深度学习要做的事情。只不过上述定义的函数是模拟神经网络建立的, 如图。可以看到,这里的计算可以抽象成矩阵的计算,所以线性代数一定要好好学。下图只是一个函数,而神经网络是有多个这样的函数串行或者并行组成。
这里写图片描述
一个简单的图片识别的例子,如下图所示
这里写图片描述
文中也介绍到要确定神经网络的层数和每一层的神经元个数需要我们不断的尝试和纠正另外也要靠一些直觉。
2.深度学习组件
训练数据,学习目标,损失,总损失。他们之间的关系是,我们通过训练数据要达到一定的学习目标,在这个目标情况下,总损失最小。 我们是以函数为训练目标的,函数结构事先定义好,参数先随机生成。将前向计算得到的结果和我们的预期结果对比计算出loss,得到总loss,然后根据设定的梯度下降算法(Gradient Descent)更新参数。而更新
3.为什么要深度学习
实践证明,参数越多,性能越好;Fat+Short 比 Thin + Tall性能差。 深度学习的代码编写者有两种角 {MOD},一种是正常角 {MOD},即搭积木的孩子;一种非正常角 {MOD},即写函数的大佬。目前的科学研究大部分在于调节深度学习的结构,优化参数等操作。
4 recipe of deep learning
选择合适损失函数,mini-batch,激活函数,可适应学习率,momentum,early stop, 正则化, 网络结构。 损失函数有那些:square error,cross entropy
mini-batch:batch是我们选择的一个处理单位,表明一次取多少数据进行处理
激活函数:ReLU,Sigmoid,Maxout
学习率:学习率太高,则总损失在每次更新后可能不会下降,如果学习率太低,则训练过程会很慢
momentum:momentum是梯度下降法中一种常用的加速技术。(https://www.zhihu.com/question/24529483
early stopping: 学习目标由训练数据定义,而训练数据和测试数据往往不一样,因此我们需要确保训练数据训练出来的参数适应于测试数据,不要出现过拟合现象。
正则化:weight decay是一种正则化手段,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大
dropout:是指随机去掉神经网络中的某些神经元达到优化训练过程(http://www.cnblogs.com/dupuleng/articles/4341265.html
网络结构:各种cnn模型(Inception v1,v2,v3等)
有错误的话欢迎指正~