先导概念 人工智能,深度学习,机器学习关系
人工智能
- 给个定义:努力将通常由人类完成的治理任务自动化
- 符号主义人工智能适用于解决定义明确的逻辑问题,但是难以给出明确的规则来解决更加复杂模糊的问题,图像分析,语音识别和语言翻译,因此催生了一种新的方法来代替这种符号主义人工智能,就是机器学习。
深度学习
机器学习
- 机器学习的概念来自于图灵的问题:对于计算机而言,能否自我学习执行特定任务的方法,假如不存在预先设定的数据处理规则,计算机能否通过观察数据去找出某种规则
- 旧时,经典的程序时通过输入规则和需要根据这些规则去进行处理数据,系统会输出我们想要的答案,但是对于机器学习而言,人们是输入数据和从这些数据中预期得到的答案,系统输出的是规则,并且这些规则可以往后去适用于新的数据,让计算机自己得出答案。
- 因此,机器学习系统,是训练出来的,不是由明确的程序规则预先写出来的。
- 后来的迅速发展得益于更强大的硬件和更庞大的数据集的支持。
从数据中学习表示
- 机器学习的三个要素:输入数据点,预测输出的示例,衡量算法效果好坏的方法
- 输入数据点
- 图像,语音
- 预期输出的示例
- 语音——文本,图像——标签结果
- 衡量算法效果好坏的方法
- 为了计算算法的当前输出与预期输出的差距,这个结果是一个反馈信号,用来调节算法的工作方式的。
机器学习的学习就是指,寻找更好数据表示的自动搜索过程。 - 所有的机器学习算法都包含着自动寻找的一种变换:这种变换可以根据任务将数据转化为更加有用的表示,这些操作是一种坐标变换,可以使线性投影,可以是平移,可以是非线性操作。
- 由此引出机器学习的技术定义——在预先定义好的可能性空间中,利用反馈信号的指引去寻找输入数据的有用表示。
深度学习之深度
- 深度在于使用了一片连续的表示层,还可以看做那么多层是在做多级信息蒸馏操作
基本的工作原理
- 损失函数式用来衡量输出值和预期值之间的距离,也叫目标函数,同时利用这个距离值,去作为反馈信号对权重值进行微调,进而降低对应的损失值,也就是实现的所谓反向传播的算法
机器学习简史
概率建模
- 早期的机器学习形式当中,朴素贝叶斯算法,是一种基于应用贝叶斯定理的机器学习分类器,假设了输入数据的特征都是独立的,所以才叫朴素。另一个是逻辑回归,被叫做现在机器学习的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张量
深度学习的集合解释
- 神经网络完全是由一些张量运算组成的,这些张亮运算只是输入数据的几何变换,因此,可以将神经网络解释为高维空间中非常复杂的集合变换。
- 一个形象的比喻——一张纸放在另一张上,一起揉成一个小球,此为输入的数据,每张纸对应于分类问题的一个类别,神经网络要做的就是找到可以让纸球恢复平整的变换。
- 为复杂的、高度折叠的数据流形找到简洁的表示,深度学习擅长于将复杂的集合变换逐步分解为一长串基本的几何变换,网络的每一层都通过变换使得数据解开一点点,许多层叠在一起,就可实现很复杂的解开过程。
梯度下降
###随机梯度下降
- 小批量随机梯度下降流程
- 抽取训练样本x和对应目标y组成的数据批量
- 在x上运行网络,得到预测值y_pred
- 计算网络在这批数据上的损失,用于衡量y_pred和y之间的距离
- 计算损失相对于网络参数的梯度【一次反向传播】
- 将参数沿着梯度的反方向移动一点
- 随机是指每批数据都是随机抽取的
- 小批量SGC算法的一个变体是每次迭代时只抽取一个样本和目标,不是抽取一批数据,这叫真SGD。每一次迭代都在所有数据上运行,叫做批量SGD,计算代价大。
- 此为最简单的一维单个参数的示意图
- SGD还会有很多变体,区别在于计算下一次权重更新时候还要考虑上一次权重更新,而不是仅仅考虑当前梯度值,带动量的SGD,Adagrad,RMSProp,这些变体称为优化方法,或者叫优化器
- 动量解决了两个问题:收敛速度和局部极小点;灵感来源于物理学,如果小球的动量足够 大,就不会卡在峡谷内,最终会到达全局最小点。,就是更新参数w不仅要考虑当前的梯度值,还要考虑上一次的参数更新
#神经网络入门 ##神经网络剖析
层
- 简单的向量数据保存在2D张量——全连接层
- 序列数据保存在3D张量——循环层
- 图像数据保存在4D张量中——二维卷积层
模型:层构成给的网络
- 网络拓扑结构
- 双分支网络
- 多头网络
- Inception模块
- 网络拓扑结构定义了一个假设空间,在预先定义好的可能性空间中,利用反馈信号的指引来寻找输入数据的有用表示。,选定了网络拓扑结构,意味着将可能性空间限定为一系列特定的张量运算将输入数据映射为输出数据,然后,需要为这些张量运算的权重张量找到一组合适的值。
损失函数与优化器:配置学习过程的关键
- 在确定了网络架构之后,需要选定两个参数——损失函数 和 优化器(决定如何基于损失函数对网络进行更新,执行的是随机梯度下降的某个变体)
- 二分类——二元交叉熵
- 多分类——分类交叉熵
- 回归问题——均方误差
- 序列学习——联结主义时序分类
##Keras
概述
- 流程
- 定义好训练数据:输入张量和目标张量
- 定义层组成的网络,将输入映射到目标
- 配置学习过程,选择损失函数,优化器和需要监控的指标
- 调用模型的 fit方法在训练数据上进行迭代