- 机器学习:讨论各式各样的适用于不同问题的函数形式,以及如何使用数据来有效地获取函数参数具体值的学科。
- 深度学习:机器学习中的一类函数,它们的形式通常为多层神经网络。
-
ch1-Python入门
-
Python解释器
- 数据类型:type()函数
- int整型
- float浮点型
- str字符串
- 变量:x/y等
- 列表(数组)
- a[索引]
- 字典:以键值对的形式储存数据
-
- 布尔型(bool型):取True或False中的一个值。
- if语句
- for语句:循环处理
- 函数
- 数据类型:type()函数
-
Python脚本文件
- class:类
-
- class:类
-
Numpy
- 生成Numpy数组
- np.array()接收Python列表作为参数,生成NumPy数组(numpy.ndarray)。
- np.array()接收Python列表作为参数,生成NumPy数组(numpy.ndarray)。
- Numpy的算数运算(元素个数需要相同,否则程序报错)
- Numpy的N维数组
- 一维数组:向量
- 二维数组:矩阵
- 多维数组:一般化后的向量或矩阵--张量
- 广播:形状不同的数组之间运算,先进行扩展
- 访问元素
- 生成Numpy数组
-
Matplotlib
- pyplot模块
- 显示图像imread()
- pyplot模块
-
-
ch2-感知机
-
感知机的概念
-
简单逻辑电路
- 与门:全1为1,其余为0
- 与非门:与门取反
- 或门:全0为0,其余为1
- 异或门:相同为0,相异为1(单层感知机的局限性就在于无法实现曲线分割,即非线性空间,可采用叠加层)
- 与门:全1为1,其余为0
-
多层感知机
-
-
ch3-神经网络
-
激活函数
- sigmoid函数
- 阶跃函数
- ReLu函数
- sigmoid函数
-
多维数组的运算
- 维度和形状
- 内积(点乘)
-
三层神经网络的实现
- 符号确认
- 代码实现
- 符号确认
-
输出层的设计
- 恒等函数—回归问题
- 输入等于输出,原封不动
- softmax函数—分类问题(概率)
- 防止溢出的处理(值过大)
- 防止溢出的处理(值过大)
- 恒等函数—回归问题
-
手写数字识别-MNIST数据集
- 前向传播
- load_minist函数
- PIL模块:用于显示图像
- load_minist函数
- 推理处理
- 输入出输出设置数值的来源
- 定义三个函数
- 评价识别精度
- 预处理
- 正规化:把数据限定到某 个范围内的处理称为正规化(所有像素值除以255,即限定在0~1)
- 白化:数据整体的分布形状均匀化
- 批处理
- range() 函数:若指定为range(start, end),则会生成一个由start到end-1之间的整数构成的 列表。若像range(start, end, step)这样指定3个整数,则生成的列表中的 下一个元素会增加 step 指定的值。
- argmax()函数:获取值最大的元素的索引。不过这里需要注意的是, 我们给定了参数 axis=1。这指定了在 100 × 10 的数组中,沿着第 1 维方向(以 第 1 维为轴)找到值最大的元素的索引(第 0 维对应第 1 个维度)。
- 输入出输出设置数值的来源
- 前向传播
-
-
ch4-神经网络的学习
-
神经网络的特征:从数据中学习
- 泛化能力:处理未被观察过的数据的能力
- 监督数据:训练数据
- 过拟合:只对某个数据集过度拟合的状态
-
损失函数:一种指标,神经网络以此为线索寻找最优权重参数
- 均方误差
- one-hot表示:正确解标签表示为1,其余为0
- 交叉熵误差
- mini-batch学习:从大量的训练数据中随机选择指定个数的数据进行学习
- 均方误差
-
数值微分
- 导数
- 舍入误差
- 例子
- 偏导数:有多个变量的函数的导数
- 导数
-
梯度:由全部变量的偏导数汇总而成的向量。梯度指示的方向是各点处的函数值减小最多的方向。
- 数学式表示梯度
- 神经网络的梯度
- 数学式表示梯度
-
算法的实现
- 随机梯度下降法
- 2层神经网络的类
- 随机梯度下降法
-
-
ch5-误差反向传播
-
反向传播
-
加法
- 直接传给下游
- 直接传给下游
-
乘法
- 需要正向的输入值
- 需要正向的输入值
-
-
简单层的实现
-
乘法层(MulLayer类)代码实现
-
加法层代码实现
-
-
-
激活函数层的实现
-
ReLU层
-
Sigmoid层
-
-
Affinie的实现
- Affinw层定义
- 神经网络的正向传播中进行的矩阵的乘积运算在几何学领域被称为“仿射变换”A。因此,这里将进行仿射变换的处理实现为“Affine 层”。
- 神经网络的正向传播中进行的矩阵的乘积运算在几何学领域被称为“仿射变换”A。因此,这里将进行仿射变换的处理实现为“Affine 层”。
- 批版本Affine层
- Affinw层定义
-
Softmax-with-Loss 层
- 误差反向传播法
- 误差反向传播法的梯度确认
- 误差反向传播法的梯度确认
-
-
ch6-调参技巧
-
参数的更新方法
- 最优化:寻找最优参数
- SGD
- Momentum
- AdaGrad
- Adam
- 最优化:寻找最优参数
-
权重初始值
- Xavier初始值
- He初始值
- Batch Normalization
-
抑制过拟合的正则化技术
- 权值衰减
- Dropout
-
-
ch7-卷积神经网络CNN
-
整体结构
-
卷积层
- 输入输出数据称为特征图(feature map)。其中,卷积层的输入数据称为输入特征图(input feature map),输出数据称为输出特征图(output feature map)。
- 填充:向输入数据的周围填入固定的数据,比如 0
- 步幅:应用滤波器的位置间隔
- 输出大小
- 增大步幅后,输出大小会变小。而增大填充后,输出大小会变大。
- 增大步幅后,输出大小会变小。而增大填充后,输出大小会变大。
- 输入输出数据称为特征图(feature map)。其中,卷积层的输入数据称为输入特征图(input feature map),输出数据称为输出特征图(output feature map)。
-
池化层
- 池化的定义:缩小高、长方向上的空间的运算。在图像识别领域主要使用Max池化
- 池化层的特征
-
卷积层和池化层的实现
- 4维数组
- 基于im2col展开(image to column)
- 定义:im2col 是一个函数,将输入数据展开以适合滤波器(权重)
- 卷积层的实现
- 池化层的实现
- CNN的实现
- 网络构成(SimpleConvNet的类)
- 初始化最开始的部分
- 权重参数的初始化部分
- 生成必要的层
- 基于误差反向传播法求梯度的代码实现
- 网络构成(SimpleConvNet的类)
- CNN可视化
- 第1层权重的可视化
- 基于分层机构的信息提取
- 第1层权重的可视化
- 具有代表性的CNN
- LeNet
- 与现在的CNN相比有几个不同点。第一个不同点在于激活 函数。LeNet 中使用 sigmoid 函数,而现在的 CNN 中主要使用 ReLU 函数。 此外,原始的LeNet中使用子采样(subsampling)缩小中间数据的大小,而 现在的 CNN 中 Max 池化是主流。
- AlexNet
- 与LeNet没有太大不同。主要差异在于激活函数使用ReLU;使用进行局部正规化的LRN(Local Response Normalization)层;使用Dropout
- LeNet
- 4维数组
-
-
ch8-深度学习
-
加深网络
-
提高识别精度
- 集成学习
- 学习率衰减
- Data Augmentation
- 数据扩充,例如旋转平移裁剪翻转等变形,施加亮度等外观变化,放大缩小等尺度变化
- 加深层的好处
- 可以减少参数的数量,扩大感受野(receptive field,给神经元施加变化的某个局部空间区域)。并且, 通过叠加层,将 ReLU 等激活函数夹在卷积层的中间,进一步提高 了网络的表现力。
- ImageNet
- 拥有超过 100 万张图像的数据集,它包含 了各种各样的图像,并且每张图像都被关联了标签(类别名)。每年都会举办 使用这个巨大数据集的 ILSVRC 图像识别大赛。
-
深度学习的历史
-
VGG
- 由卷积层和池化层构成的基础的 CNN。不过,如图 8-9 所示, 它的特点在于将有权重的层(卷积层或者全连接层)叠加至 16 层(或者 19 层), 具备了深度
- 由卷积层和池化层构成的基础的 CNN。不过,如图 8-9 所示, 它的特点在于将有权重的层(卷积层或者全连接层)叠加至 16 层(或者 19 层), 具备了深度
-
GoogleLeNet
- 网络不仅 在纵向上有深度,在横向上也有深度(广度)。GoogLeNet 在横向上有“宽度”,这称为“Inception 结构”
- 网络不仅 在纵向上有深度,在横向上也有深度(广度)。GoogLeNet 在横向上有“宽度”,这称为“Inception 结构”
-
ResNet
- 导入了“快捷结构”(也称为“捷径”或“小路”)。导入这 个快捷结构后,就可以随着层的加深而不断提高性能了
- 导入了“快捷结构”(也称为“捷径”或“小路”)。导入这 个快捷结构后,就可以随着层的加深而不断提高性能了
-
迁移学习
-
-
深度学习的高速化
- 基于GPU的高速化
- GPU 原本是作为图像专用的显卡使用的,但最近不仅用于图像处理, 也用于通用的数值计算。由于 GPU 可以高速地进行并行数值计算,因此 GPU 计算的目标就是将这种压倒性的计算能力用于各种用途。
- 分布式学习
- 运算精度的位数缩减
- 今后半精度浮点数将 被作为标准使用
- 基于GPU的高速化
-
深度学习的应用案例
- 物体检测
- 图像分割
- 最简单的是以所有像素为对象,对 每个像素执行推理处理。
- FCN
- 图像标题的生成
- NIC
- NIC
- 物体检测
-
深度学习的未来
- 图像风格变换
- 图像的生成
- DCGAN
- DCGAN
- 自动驾驶
- SegNet
- Deep Q-Network(强化学习)
- 基本框架:代理(Agent)根据环境选择行动,然后通过这 个行动改变环境。根据环境的变化,代理获得某种报酬。强化学习的目的是 决定代理的行动方针,以获得更好的报酬
- 基本框架:代理(Agent)根据环境选择行动,然后通过这 个行动改变环境。根据环境的变化,代理获得某种报酬。强化学习的目的是 决定代理的行动方针,以获得更好的报酬
-
-