ml入门(二)powered by @李宏毅


第六课(deep learning)

一 前向传播和反向传播

概念详解 https://blog.csdn.net/bitcarmanlee/article/details/78819025

二 keras实战

// example
from keras.layers import Dense, models
model = models.Sequential() // 初始化模型// a layer instance is callable on a tensor, and returns a tensor
// Dense表示添加的为全连接layer
// input_dim为输入数据的形状, units为输出单元数, activation为激活函数
model.add(Dense(input_dim=28*28, units=500, activation='relu'))
model.add(Dense(units=500, activation='relu'))
model.add(Dense(units=10, activation='softmax'))// loss指定损失函数, optimizer指定优化函数, matrics用来指定衡量模型的指标
model.compile(loss='categorical_crossentropy', optimizer='adadelta', matrics=['accuracy'])// x_train为输入数据, y_train为输入标签, batch_size为每次训练数, nb_epoch为训练轮数
model.fit(x_train, y_train, batch_size=100, nb_epoch=10)// case1: 已知训练数据的y,测试一下model的好坏, score返回一个二维向量,score[0]为总损失,score[1]为精确度
score = model.evaluate(x_test, y_test)// case2: 直接进行预测
result = model.predict(x_test)

三 如何优化model

使用train_data结果较差

(1) 更换activation function
(2) 调整learning rate
(3) RMSProp+momentum = adam 动态调整learning rate

RMSProp(Root Mean Square Prop)

RMSProp算法对梯度计算了微分平方加权平均数。这种做法有利于消除了摆动幅度大的方向。
微分平均加权平均数:根据同一个移动段内不同时间的数据对预测值的影响程度,分别给予不同的权数,然后再进行平均移动以预测未来值

v0=0
v1=βv0+(1−β)x1
v2=βv1+(1−β)x2
......

momentum

类似于物理中的惯性原理,将上一轮的所前进方向作为动量,最后根据本轮的梯度和动量计算出本轮实际的运动方向

overfitting解决办法

(1) early stopping

基本含义是在训练中计算模型在验证集上的表现,当模型在验证集上的表现开始下降的时候,停止训练,这样就能避免继续训练导致过拟合的问题

(2) regularization

范数详细概念: https://blog.csdn.net/zwqjoy/article/details/81912821
L1范数(Lasso Regression) // 向量各元素的绝对值之和
L1规范化经常被用在降噪声和图像重建中

L2范数(Ridge Regression) // 欧氏距离的平方乘上一个系数 别名:权重衰减(weight decay)
根据公式形式,这样一项加上之后,权重的绝对值大小就会整体倾向于减小,尤其是不会出现特别大的值

L1和L2的区别
L1可以让一部分特征的系数缩小到0,从而间接实现特征选择。所以L1适用于特征之间有关联的情况。
L2让所有特征的系数都缩小,但是不会减为0,它会使优化求解稳定快速。所以L2适用于特征之间没有关联的情况。

(3) dropout
Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。
过程:

  1. 首先随机(临时)删掉网络中一半(一般情况下,此参数可自定义)的隐藏神经元,输入输出神经元保持不变。
  2. 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)。
  3. 然后继续重复这一过程:
    1. 恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)。
    2. 从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(备份被删除神经元的参数)。
    3. 对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。


梯度消失问题

当前面隐藏层的学习速率低于后面隐藏层的学习速率,即随着隐藏层数目的增加,分类准确率反而下降了。这种现象叫做消失的梯度问题。
使用sigmoid function在layer嵌套过深的情况下会造成梯度不断衰减最后趋近于零。

relu(Rectified Linear Unit)

可以看出,relu函数的导数在正数部分是恒等于1的,因此在深层网络中使用relu激活函数就不会导致梯度消失的问题。

四 maxout 激活函数

使用maxout的默认先验:样本集是凸集可分的
在前馈式神经网络中,Maxout的输出取该层的多个fc的同一位置的神经元的最大值;卷积中,Maxout的输出取多个feature map同一位置的最大值。

maxout 可以拟合任意的的凸函数。

maching learning入门(二)相关推荐

  1. maching learning入门(六)

    ml入门(六)powered by @李宏毅 第十五课(Reinforcement Learning) 让机器根据不同的action将会得到不同的response,可能是不好的,也可能是好的.rein ...

  2. maching learning入门(一)

    ml入门(一)powered by @李宏毅 第一课(机器学习总览) ml基本步骤 1 找出一个function set 2 让maching拥有衡量一个function好坏的能力  loss fun ...

  3. maching learning入门(五)

    ml入门(五)powered by @李宏毅 第十三课(RNN,recurrent neural network,循环神经网络) 全连接神经网络和卷积神经网络他们都只能单独的取处理一个个的输入,前一个 ...

  4. maching learning入门(四)

    ml入门(四)powered by @李宏毅 第十课(迁移学习) 迁移学习要解决的问题是:假设现在手上有与task不直接相关的data,这些data能否帮助我们完成task呢? 比如现在要做猫狗的分类 ...

  5. maching learning入门(三)

    ml入门(三)powered by @李宏毅 第七课(cnn) 1 keras example from keras import Convolution2D, Dense, models, MaxP ...

  6. SQL基础使用入门(二): DML语句和DCL语句

    SQL语句第二个类别--DML 语句 DML是数据操作语言的缩写,主要用来对数据表中数据记录实例对象进行操作,包括插入.删除.查找以及修改四大操作,这也是开发人员使用中最为频繁的操作. 1.插入记录 ...

  7. 文本分类入门(二)文本分类的方法

    文本分类入门(二)文本分类的方法 文本分类问题与其它分类问题没有本质上的区别,其方法可以归结为根据待分类数据的某些特征来进行匹配,当然完全的匹配是不太可能的,因此必须(根据某种评价标准)选择最优的匹配 ...

  8. 转 Python爬虫入门二之爬虫基础了解

    静觅 » Python爬虫入门二之爬虫基础了解 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以 ...

  9. deep learning入门学习

    根据知乎的一些大牛的回答总结出的deep learning入门学习的一些material: BE NOTED THAT SOME VIDEOS ARE ON YOUTUBE! I BELIEVE TH ...

最新文章

  1. html让a标签左右一样宽,button和a标签设置相同的css样式,但是宽度不同
  2. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐
  3. 磁盘分区20191017
  4. Maven私服的配置和使用
  5. SQLServer数据库差异备份
  6. 传说之下音乐计算机版,传说之下同人音乐
  7. 连接和关闭资源工具类
  8. 九宫格图片上传可展示,可删除,可添加功能
  9. City2vec:一种学习人口迁徙网络知识的新方法
  10. 程序员不能错过的20个学习网站
  11. 为什么csgo一直显示连接官方服务器失败,CSGO提示连接任意官方服务器失败怎么办?五大详细解决方法看这里!...
  12. 音乐计算机曲谱狂妄之人,【B】 Undertale Sans战斗曲 MEGALOVANIA狂妄之人
  13. LSV打印并制作城市地图教程 还可以做分布图、标注图
  14. 学会读懂 MySql 的慢查询日志
  15. [爆笑]吃了伟哥的公鸡
  16. 第一节计算机课开场白,第一节课有趣的开场白
  17. 多大士嘉堡校区的计算机科学,低分如何逆袭多伦多大学!
  18. xdm俺来了、详解超市订单管理系统SSM版本
  19. Java语言实现的各种排序
  20. 程序的世界里,短暂的放空

热门文章

  1. gtp java 文件传输_5_1_图片上传
  2. VRTK4开发VR3:通过手柄进行移动
  3. 下载安装setuptools
  4. OSGi 规范和框架 OSGi框架类加载机制 Java默认类加载器机制和OSGI类加载器机制比较
  5. [luogu] P1504 积木城堡 01背包
  6. 查看和修改G120变频器参数的具体方法(BOP-2面板+Startdrive)
  7. JavaScript:moment12小时制和24小时制
  8. 2021年熔化焊接与热切割报名考试及熔化焊接与热切割考试内容
  9. laravel 链接多库方案
  10. 分享|智慧环保-生态文明信息化解决方案(附PDF)