Deep Learning——Reading notes

先导概念

人工智能,深度学习,机器学习关系

人工智能

  • 给个定义:努力将通常由人类完成的治理任务自动化
  • 符号主义人工智能适用于解决定义明确的逻辑问题,但是难以给出明确的规则来解决更加复杂模糊的问题,图像分析,语音识别和语言翻译,因此催生了一种新的方法来代替这种符号主义人工智能,就是机器学习。

深度学习

机器学习

  • 机器学习的概念来自于图灵的问题:对于计算机而言,能否自我学习执行特定任务的方法,假如不存在预先设定的数据处理规则,计算机能否通过观察数据去找出某种规则
  • 旧时,经典的程序时通过输入规则和需要根据这些规则去进行处理数据,系统会输出我们想要的答案,但是对于机器学习而言,人们是输入数据和从这些数据中预期得到的答案,系统输出的是规则,并且这些规则可以往后去适用于新的数据,让计算机自己得出答案。
  • 因此,机器学习系统,是训练出来的,不是由明确的程序规则预先写出来的。
  • 后来的迅速发展得益于更强大的硬件和更庞大的数据集的支持。

从数据中学习表示

  • 机器学习的三个要素:输入数据点,预测输出的示例,衡量算法效果好坏的方法
  1. 输入数据点
  • 图像,语音
  1. 预期输出的示例
  • 语音——文本,图像——标签结果
  1. 衡量算法效果好坏的方法
  • 为了计算算法的当前输出与预期输出的差距,这个结果是一个反馈信号,用来调节算法的工作方式的。
    机器学习的学习就是指,寻找更好数据表示的自动搜索过程。
  • 所有的机器学习算法都包含着自动寻找的一种变换:这种变换可以根据任务将数据转化为更加有用的表示,这些操作是一种坐标变换,可以使线性投影,可以是平移,可以是非线性操作。
  • 由此引出机器学习的技术定义——在预先定义好的可能性空间中,利用反馈信号的指引去寻找输入数据的有用表示。

深度学习之深度

  • 深度在于使用了一片连续的表示层,还可以看做那么多层是在做多级信息蒸馏操作

基本的工作原理

  • 损失函数式用来衡量输出值和预期值之间的距离,也叫目标函数,同时利用这个距离值,去作为反馈信号对权重值进行微调,进而降低对应的损失值,也就是实现的所谓反向传播的算法

机器学习简史

概率建模

  • 早期的机器学习形式当中,朴素贝叶斯算法,是一种基于应用贝叶斯定理的机器学习分类器,假设了输入数据的特征都是独立的,所以才叫朴素。另一个是逻辑回归,被叫做现在机器学习的hello world,是一种分类,不是回归。

早期的神经网络

  • 20年代已经出现单一神经元结构,在80年代中期发生了些许变化,发现出了反向传播算法,一种利用梯度下降优化来训练一系列参数化运算链的方法。89年第一次,于贝尔实验室实现了神经网络的应用,将卷积神经网络的早期思想和反向传播算法相结合,取名LeNet的网络。

核方法

  • 90年代出现一种分类方法,其中最著名的是支持向量机SVM,其现代公式是90年代初在贝尔实验室提出的,发表于1995年。
  • SVM——目标是通过在属于两个不同类别的两组数据点之间找到良好的决策边界。
  • 为了让其思路能够落地,需要利用一些核技巧,只需要在新空间中计算点对之间的距离,利用核函数可以高效完成这种计算,将原始空间中的任意两点映射为这两点在目标表示空间中的距离,避免了对新表示进行直接计算。

决策树,随机森林和梯度提升机

  • 决策树——可以对输入数据点进行分类或者根据给定输入来预测输出值。
  • 随机森林引入了一种健壮且实用的决策树学习方法,先构建许多决策树,将他们输出集中在一起。
  • 梯度提升方法通过迭代地训练新模型来专门解决之前模型的弱点,从而改进任务机器学习模型的效果

回到神经网络

  • 标致事件是12年图像分类大赛跟hinton有关的小组中实现了83.6%的top-5精度,15年去到了96.4%

深度学习的特征

  • 深度学习使得特征工程完全自动化,曾经是机器学习工作流程中的最关键的一步。
  • 让初始输入数据使用诸如SVM和决策树进行处理,必须手动去为数据设计好表示层,这叫特征工程,于此相反的是,深度学习完全将这个步骤自动化了。
  • 深度学习从数据中学习的两个基本特征:1.通过渐进的逐层的方式形成越来越复杂的表示,2.对中间这些渐进的表示共同进行学习

神经网络的数学基础

初窥

  • 分类问题中某个类别叫类,数据点叫做样本,某个样本对应的类叫做标签

神经网络的数据表示

张量的维度通常叫轴。

标量——0D张量

向量——1D张量

矩阵——2D张量

3D张量和更高维张量

###张量关键属性

  • 轴的个数(阶)——
  • 形状
  • 数据类型

现实世界数据张量

  • 时间序列数据——3D张量
  • 图像——4D张量
  • 视频——5D张量

深度学习的集合解释

  • 神经网络完全是由一些张量运算组成的,这些张亮运算只是输入数据的几何变换,因此,可以将神经网络解释为高维空间中非常复杂的集合变换。
  • 一个形象的比喻——一张纸放在另一张上,一起揉成一个小球,此为输入的数据,每张纸对应于分类问题的一个类别,神经网络要做的就是找到可以让纸球恢复平整的变换。
  • 为复杂的、高度折叠的数据流形找到简洁的表示,深度学习擅长于将复杂的集合变换逐步分解为一长串基本的几何变换,网络的每一层都通过变换使得数据解开一点点,许多层叠在一起,就可实现很复杂的解开过程。

梯度下降

###随机梯度下降

  • 小批量随机梯度下降流程
  1. 抽取训练样本x和对应目标y组成的数据批量
  2. 在x上运行网络,得到预测值y_pred
  3. 计算网络在这批数据上的损失,用于衡量y_pred和y之间的距离
  4. 计算损失相对于网络参数的梯度【一次反向传播】
  5. 将参数沿着梯度的反方向移动一点
  • 随机是指每批数据都是随机抽取的
  • 小批量SGC算法的一个变体是每次迭代时只抽取一个样本和目标,不是抽取一批数据,这叫真SGD。每一次迭代都在所有数据上运行,叫做批量SGD,计算代价大。
  • 此为最简单的一维单个参数的示意图
  • SGD还会有很多变体,区别在于计算下一次权重更新时候还要考虑上一次权重更新,而不是仅仅考虑当前梯度值,带动量的SGD,Adagrad,RMSProp,这些变体称为优化方法,或者叫优化器
  • 动量解决了两个问题:收敛速度和局部极小点;灵感来源于物理学,如果小球的动量足够 大,就不会卡在峡谷内,最终会到达全局最小点。,就是更新参数w不仅要考虑当前的梯度值,还要考虑上一次的参数更新

#神经网络入门 ##神经网络剖析

  • 简单的向量数据保存在2D张量——全连接层
  • 序列数据保存在3D张量——循环层
  • 图像数据保存在4D张量中——二维卷积层

模型:层构成给的网络

  • 网络拓扑结构
  1. 双分支网络
  2. 多头网络
  3. Inception模块
  • 网络拓扑结构定义了一个假设空间,在预先定义好的可能性空间中,利用反馈信号的指引来寻找输入数据的有用表示。,选定了网络拓扑结构,意味着将可能性空间限定为一系列特定的张量运算将输入数据映射为输出数据,然后,需要为这些张量运算的权重张量找到一组合适的值。

损失函数与优化器:配置学习过程的关键

  • 在确定了网络架构之后,需要选定两个参数——损失函数优化器(决定如何基于损失函数对网络进行更新,执行的是随机梯度下降的某个变体)
  • 二分类——二元交叉熵
  • 多分类——分类交叉熵
  • 回归问题——均方误差
  • 序列学习——联结主义时序分类

##Keras

概述

  • 流程
  1. 定义好训练数据:输入张量和目标张量
  2. 定义层组成的网络,将输入映射到目标
  3. 配置学习过程,选择损失函数,优化器和需要监控的指标
  4. 调用模型的 fit方法在训练数据上进行迭代

机器学习基础

机器学习的四个分支

监督学习

  • 给定一组样本,可以学会将输入数据映射到已知目标
  • 监督学习的种类
  1. 序列生成——
  2. 语法树预测——给定一个句子,预测分解生成的语法树
  3. 目标检测——给定一张图像,在途中特定目标的周围画一个边界框。也可以是一个分类问题或者分类和回归联合的问题
  4. 图像分割——给定一张图像,在特定的物体上画一个像素级的掩模(mask)

无监督学习

  • 无监督学习指的是在没有目标的情况下寻找输入数据的有趣交换,目的在于数据可视化,数据压缩,数据去燥或者更好理解数据中的相关性。
  • 普遍的无监督——降维和聚类

自监督学习

  • 没有人工标注的标签的监督学习,也可以说成是没有人类参与的监督学习。,标签依然存在,但是从输入数据中生成,通常使用启发式算法生成的。
  • 自编码器是其中一个例子。另一个例子使视频过去的帧预测下一帧,文本中前面出现的词来预测下一个词。

强化学习

  • 强化学习,智能体接收有关其环境的信息,并且学会选择使某种奖励最大化的行动。
  • 例子——神经网络会观察视频游戏的屏幕并输出游戏操作,目的是尽可能得到高分,这种网络可以通过强化学习来训练。

评估机器学习模型

  • 过拟合,随着训练的进行,模型在训练数据上的性能始终在提高,但在前所未见的数据上的性能不再变化或者开始下降。
  • 机器学习的目的是得到可以泛化的模型,即在前所未见的数据上表现很好的模型,而过拟合则是核心难点。

训练集、验证集合测试集

  • 在训练数据上训练模型,在验证数据上评估模型,找到了最佳参数,舅仔测试数据上最后测试一次。
  • 需要三个集的一个原因是,在某个参数空间中寻找良好的模型配置,因此,基于模型在验证集上的性能来调节模型配置,会很快导致模型在验证集上过拟合,即使没有在验证集上直接训练模型也会如此,造成这一现象关键在于信息泄露。
  • 简单的三种经典评估方法
  1. 简单的流程验证——流出一定比例数据做测试集,剩余数据上训练模型,然后在测试集上评估模型;缺点在于如果可用的数据很少,可能验证集和测试集包含的样本就太少,从而无法在统计学上代表数据
  2. K折验证
  3. 打乱数据的重复K折验证

评估模型的注意事项

  • 数据代表性——数据的随机打乱
  • 时间箭头——时间序列相关的数据,在划分数据的时候就不应该随机打乱数据了,会造成时间泄露
  • 数据冗余——数据中某些数据点出现了两次的话,打乱数据并划分成训练集和验证集会导致训练集和验证集之间的数据冗余

数据预处理、特征工程和特征学习

神经网络的数据预处理

  • 预处理的目的在于使得原始数据更适于神经网络处理,包括向量化、标准化、处理缺失值和特征提取。
  • 向量化——首先将数据转换为张量,此为数据向量化
  • 值标准化——将每个也正分别做标准化,使得均值为0标准差为1,过多异质数据输入神经网络是不安全的,会导致较大的梯度更新,进而导致网络无法收敛。输入数据最好具有如下特征:取值较小(大部分值应该在0~1之间)和同质性(所有特征的取值都应该在大致相同的范围内)
  • 处理缺失值——缺失值设为0对神经网络会偏于安全,网络会从数据中学到0是意味着缺失数据,会湖忽略这个值

特征工程

  • 特征工程是指将数据输入模型之前,利用自己关于数据和机器学习算法的知识对数据进行硬编码的变换,以改善模型的效果。
  • 特征工程的本质——用更简单的方式表述问题,从而能使得问题变得更容易,通常需要深入理解问题。
  • 曾经的特征工程是重要的,因为经典的浅层算法没有足够大的假设空间来自己学习有用的标识。但是对于现代的深度学习,大部分的特征工程变得不需要了。

转载于:https://juejin.im/post/5bd1ca82e51d457aba5e8840

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值