- 优点:曲线平滑,导数容易计算
- 缺点:计算耗时,梯度进入饱和区容易造成梯度消失难以收敛
- 处理多分类问题,输出每一个类别对应的输出的概率,概率最大者为预测结果
- 分段线性,单侧抑制
- 模型收敛快,梯度不会消失
- 稀疏激活神经网络
- 变化形式:LeakyReLU,eReLU,PReLu等
- 从梯度下降演变而来
- 随机打乱全部数据
- 重复执行梯度下降,但是是每次只随机抽取一个样本代入计算
- 学习率对训练结果影响很大,过大或过小的学习率都不利于梯度下降
- 从梯度下降演变而来
- 随机打乱全部数据
- 每次随机选一小批样本代入计算
- 能够根据在训练过程中自适应调节学习率
- Adadelta优化器
- Adagrad 优化器,等
- 平方损失函数是预测值与真实值之间的偏差的平方
- 对多个样本求平方损失的平均值即为均方误差
- 改平方为取绝对值为平均绝对误差
- 对均方误差开根号则为均方根误差
- 发生概率越小的事情一旦发生则其信息量就越大
- 信息量I(x)=log(1/P(x))=-log(P(x))
- 交叉熵H(p,q)=-p(x)log(q(x))
卷积核可以看作是对对应区域内的加权求和,对应局部感知,卷积核区域大小叫感受野。
- 窄卷积,输出n-m+1
- 宽卷积,输出n+m-1
- 等宽卷积,输出n
二维卷积过程如下,假设卷积层的输入神经元个数为n,卷积核大小为m,步长(stride)为s, 输入 神经元两端各填补p个零(zero padding),那么该卷积后输出的神经元数量为(n−m+2p)/s+1。
- 其他卷积形式
- 转置卷积(反卷积),从低维度向高维度变的
- 微步卷积,向低维度数据中间插入0,然后再卷积,可以提高数据维度
- 空洞卷积(膨胀卷积),向卷积核中插入空洞,变相增加卷积核大小,提高了感受野,但是没有增加参数量
- 与卷积的区别是卷积核不翻转
-
卷积核
- 决定感受野大小
- 提取局部区域的特征
- 在同一层使用不同卷积核可以提取到多个不同特征
-
Feature Map
- 经卷积核提取后的特征图
- 标准化向量层,在神经网络训练过程中,使得每一层神经网络的输入保持相同分布。
- 随机抛弃一些全连接网络中的神经元,使得每一个批次都训练不同的网络,减少过拟合的发生,也精简网络结构
- 将二维以上数据展平为一维向量数列,方便与全连接层神经元一一对应。
- 局部连接 上一层神经元只与卷积核窗口内神经元相连
- 权重共享 卷积核对一层所有神经元权重共享
- 汇聚
- 计算损失函数对权重的梯度
- 计算损失函数对偏置的梯度
- 汇聚层/池化层
- 最大池化
- 误差项回传时,传到上一层池化区域内最大值对应的神经元,其他神经元误差为0
- 平均池化
- 误差项回传时,平均传到上一层池化区域内,所有神经元误差相同
- 最大池化
- 卷积层
- LeNet-5
-
AlexNet
- 首次采用GPU训练
- 采用ReLU激活
- 使用Dropout 防止过拟合
-
Inception网络
- 由Inception 模块和少量池化层堆叠而成
- GoogleNet 有9个Iception模块,5个池化层和其他卷积层和全连接层组成
- Inception v3把大卷积核换成小卷积核
- 1x1卷积核的作用:
- 当卷积核数量比输入的通道数少(多)时,能起到降维(升维)的作用
- 其降维或升维的本质是在通道间将信息线性组合变化,增加通道间的信息交互
- 在保持feature map尺寸不变的情况下,大幅增加非线性特性,可以把网络做得更深
-
ResNet 残差网络
- 把目标函数拆分为恒等函数和残差函数,让神经网络去学习残差函数,比直接学习目标函数更容易
(第五章完结)
一类具有短期记忆能力的神经网络,长于处理时序数据并利用其历史信息。
-
延时神经网络(Time Delay NN)
- 建立额外的延时单元,记录最近几次神经元的输出,使得下一层神经元的输入为上一层神经元最近多次的输出而不仅仅是一次。
-
自回归模型(Auroregressive Model)
- 用神经元的历史信息来预测自己,让历史信息能够影响现在
-
循环神经网络(RNN)
如果一个完全连接的循环神经网络有足够数量的sigmoid型隐藏神经元,它可以以任意准确率去近似任何一个非线性动力系统。
所有的图灵机都可以被一个由使用Sigmoid 型激活函数的神经元构成的全连接循环网络来进行模拟。
输入序列,输出为类别,即分类模式,还可以按时间平均采样
主要用于序列标注任务,如词性标注,即每一时刻都有输入和输出,输入序列和输出序列的长度相同。
也称为编码器-解码器(Encoder-Decoder)模型,需要先编码后解码, 输入序列和输出序列不需要有严格的对应关系,也不需要保持相同的长度。 比如在机器翻译中,输入为源语言的单词序列,输出为目标语言的单词序列。
- 把循环神经网络看作展开的多层神经网络,每一个时刻对应一层神经网络
- 所有层参数共享,因此真实梯度是所有展开层的参数梯度之和
- 参数梯度需要"向前"计算和"反向"计算后才能得到参数更新
(未完待续。。)
- 定义问题
- 预测目标
- 可用的数据
- 是否有标注
- 评估预测是否成功的标准
- 评估模型的验证过程
- 数据向量化
- 开发第一个模型 + 要打败基于常识的简单基准方法,证明机器学习的方法有效
- 通过调节超参数和添加正则化来逐步改进模型架构
- 根据模型在验证集上的性能来调参,不是测试集或训练集
- 先让模型过拟合再开始添加正则化或降低模型尺寸
- 调节超参数要防止验证集过拟合
- 因此要保存一个测试集,最终检验模型效果
- 向量数据:Dens
- 图像数据:CNN-2D
- 声音数据:CNN-1D或RNN
- 文本数据:CNN-1D或RNN
- 时间序列数据:RNN或CNN-1D
- 其他序列数据:RNN或CNN-1D
- 视频数据:CNN-3D或帧级CNN-2D+RNN/CNN-1D
- 立体数据:CNN-3D
由Dense层堆叠而成,层中每个单元都与其他所有单元想连接,主要用于处理向量数据,常用于分类数据,还用于大多数网络最终分类或者回归的阶段。
- 对于二分类问题,最后一个Dense层只有一个单元,使用sigmoid激活函数,并采用binary_crossentropy作为损失函数,目标是0或1
- 对于单标签多分类问题,每个样本只有一个类别,最后Dense层单元个数等于分类数,使用softmax激活
- 如果目标是one-hot编码,采用categorical_crossentropy作为损失
- 如果目标是整数,则用sparse_categorical_crossentropy作为损失
- 对于多标签多分类问题,每个样本可能对应多个类别,最后Dense层单元个数等于分类数,使用sigmoid激活,并采用binary_crossentropy作为损失,目标应该是k-hot编码的
- 对于连续值向量的回归问题,最后是一层不带激活的Dense层,单元个数等于要预测的值的个数(通常只有一个值,比如房价),损失函数有
- mean_squared_error(MSE)
- mean_absolute_error(MAE)
卷积层能够查看空间局部模式,其方法是对输入张量的不同空间位置应用相同的几何变换,这样得到的表示具有平移不变性,使得卷积层能够高效利用数据,并且高度模块化。这种方法适用于一维(序列)、二维(图像)和三维(立体数据)等。 卷积神经网络是卷积层和最大池化层的堆叠,最后一层通常是Flatten或全局池化层,然后再是Densen层。池化层对数据进行空间下采样,可以达到两个目的
- 让特征图尺寸保持在合理的范围内
- 让后面的卷积层能够看到输入中更大的空间范围
普通卷积层很可能会被深度可分离卷积层所取代,与普通卷积层相比,深度可分离卷积层效果一致,但是速度更快,表示效率更高。
RNN的工作原理是对输入序列每次处理一个时间步,并且始终保存一个状态。如果序列中的模式具有时间平移不变性,即最近的过去比遥远的过去更重要,应该优先采用RNN而不是CNN-1D。

















