深度学习

和机器学习的区别

特征提取方面

  • 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识
  • 深度学习通常有多个层组成,它们通常将更简单的模型组合在一起,通过将数据从一层传递到另一层来构建更复杂的模型。通过大量数据的训练自动得到模型,不需要人工设计特征提取环节

深度学习算法试图从数据中学习高级功能,这是深度学习的一个非常独特地部分。因此,减少了为每个问题开发新特征提取器的任务。适合用于在难提取的图像、语音、自然语言领域。

神经网络

人工神经网络

Artificial Neural Network,简写为ANN,也简称为神经网络(NN

经典神经网络结构包含三个层次的神经网络。

  • 输入层
  • 输出层
  • 隐藏层

深度学习进阶

深度学习正则化

学习目标

  • 了解偏差与方差的意义
  • 知道L2正则化与L1正则化的数学意义
  • 知道Droupout正则化方法
  • 了解早停止法、数据增强法的其他正则化方式

方差与偏差

数据集划分
  • 训练集(train set):用训练集对算法或模型进行训练过程
  • 验证集(development set):利用验证集(又称为简单交叉验证集,hold-out cross validation set)进行交叉验证,选出最好的模型
  • 测试集(test set):最后利用测试集对模型进行测试,对学习方法进行评估
方差与偏差的意义

偏差-方差分解bias-variance decomposition是解释学习算法泛化性能的一种重要工具

泛化误差可以分解为偏差、方差与噪声,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的困难所共同决定的

  • 偏差:度量了学习算法的期望预测与真实结果的偏离程度,即刻画了算法本身的拟合能力
  • 方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响
  • 噪声:表达了当前任务上任何学习算法所能够达到的期望泛化的下界,即刻画了学习问题本身的难度

偏差、方差与数据集划分的关系

  1. 训练集的错误率较小,而验证集/测试集的错误率较大,说明模型存在较大方差,可能出现过拟合
  2. 训练集和测试集的错误率都较大,且两者相近,说明模型存在较大偏差,可能出现了欠拟合
  3. 训练集和测试集的错误率都较小,且两者相近,说明方差和偏差都较小,模型效果较好

总结:

  • 方差一般指的是数据模型得出来了,能不能对未知数据的扰动预测准确。
  • 而偏差说明了训练集当中就已经误差较大了。基本上在测试集中没有好的效果
解决方法

对于高偏差(过拟合)

  • 获取更多的数据,使得训练能够包含所有出现的情况
  • 正则化(Regularization
  • 寻找更合适的网络结构

对于高偏差(欠拟合)

  • 扩大网络规模,如添加隐藏层或者神经元数量
  • 寻找合适的网络架构,使用更大的网络结构,如AlexNet
  • 训练时间更长些

正则化

即在损失函数中加入一个正则化项(惩罚项),惩罚模型的复杂度,防止网络过拟合

Droupout

随机的对神经网络每一层丢弃部分神经元操作

卷积神经网络

  • 卷积层
  • 池化层
  • 全连接层
  • 激活函数