第一章 Python入门

要区分矩阵的乘法和矩阵的点积等。

 

第二章 感知机

感知机:接受多个输入信号,输出一个信号。

逻辑电路,单层的感知机可以表示与门,与非门,或门。两层的感知机可以表示异或门。

由于组合与非门可以表示计算机(专家已证实),那么感知机也可以表示计算机。

 

第三章 神经网络

感知机的坏消息是:设定权重的工作还是由人工进行的。

神经网络的出现就是为了解决感知机的坏消息。

激活函数:将输入信号的总和转换为输出信号。

激活函数有很多种,比如:阶跃函数、线性函数、非线性函数等,常用的有:sigmoid函数、ReLu函数、softmax函数。

激活函数是连接感知机和神经网络的桥梁。感知机和神经网络的主要区别就在于激活函数。感知机可以看做是激活函数为阶跃函数的一种简单的神经网络。

神经网络的激活函数必须使用非线性函数,因为使用线性函数的话,加深神经网络的层数就没有意义了。(P49)

输出层所用的激活函数:一般地,回归问题使用恒等函数,二分类问题使用sigmoid函数,多分类问题使用softmax函数。(P62)

softmax函数:

《深度学习入门 基于Python的理论与实现》的读书笔记_激活函数

softmax函数的改进,上式中存在缺点:exp(x),当x很大时,其exp(x)值会非常大,在计算机运算中容易越界(溢出)。为了不越界,在运算时,对x加上(或者减去一个常数)不会改变运算结果。为了防止溢出,一般会减去输入值中的最大值(P66)

softmax函数的特征:

(1)输出是0.0到1.0的实数,softmax函数的输出值得总和是1。

 

求解机器学习问题的步骤,可以分为“学习”和“推理”两个阶段。在学习阶段进行模型的学习,在推理阶段,用学到的模型对未知的数据进行推理(分类)。

预处理:对输入数据进行某种既定的转换。预处理包括:正则化等。

批处理:由于神经网络运算是矩阵的运算,而矩阵的运算的性质,矩阵点积时形状的变化(20)x(20,10)=(10),将输入数据改为二维的,即:(100,20)x(20,10)= (100,10)。利用矩阵运算的这个性质,可以加速运算的速度。而且有些库也提供了高效处理大型数组运算的优化。(P77)

 

第4章 神经网络的学习

损失函数:其作用是以某个指标为线索寻找最优权重参数。是表示神经网络性能的“恶劣程度”的指标。常见的损失函数包括:均方误差,交叉熵误差。

交叉熵误差:在某些情况下,均方误差不能作为损失函数,见:https://zhuanlan.zhihu.com/p/35709485

mini-batch学习:当数据有几百万、几千万时,对所有的数据计算损失函数是不现实的,此时会选取一部分数据作为全部的“近视”。

为什么要有损失函数,为啥不直接使用识别精度作为指标呢?原因是:识别精度(成功个数/总样本数)是不连续的,是突然变化的,对微小的参数的变化基本上没有反应。当用识别精度作为指标时,参数的导数在绝大多数地方都会变成0。(P92)

梯度:由全部变量的偏导数汇总而成的向量。注意这是个向量。

梯度法:不断地沿梯度方向前进,逐渐减小函数值的过程。这里说的函数值是指任意函数的值。

梯度法的公式:《深度学习入门 基于Python的理论与实现》的读书笔记_神经网络_02, 其中《深度学习入门 基于Python的理论与实现》的读书笔记_激活函数_03 表示学习率。

 

第5章 误差方向传播法

计算权重参数的梯度方法:

(1)使用数值微分计算了神经网络中的损失函数关于权重参数的梯度。这个方法的优点是,容易实现,缺点是计算比较耗时。

(2)误差反向传播法:能高效的计算权重参数的梯度。

激活函数的导函数:ReLU层,Sigmoid层。

梯度确认:在实际的项目,采用误差方向传播法计算梯度,但是如何确定计算出来的梯度是正确的,则采用数值微分法来判断。

 

第6章 与学习相关的技巧

参数的更新:随机梯度下降法(SGD),Momentum,AdaGrad,Adam。

权重的初始值:必须随机生成初始值。

梯度消失:

各层的激活值分布都要求有适当的广度。

Xavier初始值:前一层的节点数越多,要设定为目标节点的初始值的权重尺度就越小。

He初始值:当激活函数使用ReLU时,一般推荐使用ReLU专用的初始值。

总结:当激活函数使用ReLU时,权重初始值使用He初始值;当激活函数为SigMoid或者tanh等S型曲线函数时,初始值使用VaVier初始值。

Batch Normalization:调整各层的激活值分布使其拥有适当的广度,因此,要向神经网络中插入对数据分布进行正规化的层。

过拟合:发生过拟合主要原因为:参数多,数据少。

解决过拟合的方法:权值衰减,Dropout。

超参数:各层的神经元数量、batch大小、参数更新时的学习率或权值衰减。

验证数据:在调整参数时,必须使用超参数专用的确认数据。

训练数据用于参数(权值和偏置)的学习,验证数据集用于超参数的性能评估,为了确认模型的泛化能力,要在最后使用测试数据集。

 

第7章 卷积神经网络

全连接层的问题是,忽视了数据的形状。

卷积层,卷积运算,卷积核(滤波器),填充,步幅,卷积运算的批处理。

池化层:输入数据发生微小的偏差时,池化仍会返回相同的结果。池化对输入数据的微小偏差具有鲁棒性。

im2col函数,将输入数据展开以适合滤波器(权重)

col2im函数:是im2col的逆函数。

 

第8章 深度学习