1.神经网络
1 基本概念
1.1 感知机
感知机指的是具有输入与输出的算法,是神经网络的基本单元。基本概念如图:
感知机是二分类的线性模型,其输入是实例的特征向量,输出的是事例的类别,分别是+1和-1,属于判别模型。
1.2 原理:取一个简单的神经网络作为例子:
其中w代表权重,b代表偏置值,g代表激活函数
(1)权重:表示单元之间连接的强度。如果从节点1到节点2的权重比较大,意味着神经元1对神经元2的影响比较大。
(2)偏置: 它是神经元的额外输入。确保即使所有的输入都为空(为0),神经元也会激活。
(3)激活函数:
我们可以把激活函数看作格式化输出结果,将结果变成我们可以使用的一种符号或者数字。
常见激活函数包括以下几种:
1.3 正则化
目的:为防止过拟合
(1) 引入惩罚系数
(2) 采取drop-out:在神经网络训练的过程中,随机杀死一部分神经元,梯度下降法可能迭代很多次,在每一次迭代中都选择一部分神经元进行杀死。
2. 各个层级的理解
2.1 输入层
输入原始的数据信号
2.2 隐藏层
其中隐藏层可以理解为对数据的抽象程度,隐藏层越多,抽象程度越高:
2.3 输出层
通过这个层,我们可以知道期望的值和期望的范围
(3)传播方式:
3.1 前向传播
第二层从第一层获取值并进行乘法,加法和激活操作,然后将得到的值传递给下一层。在后面的层中执行相同的操作
3.2 反向传播
举例:
其中绿色为输入值,红色代表梯度
对1来说:对 1/x 求导,得 -1/x^2,将输入值1.37带入,得梯度-0.53
对2来说:对W0求偏导得到系数为x0,即-1,将-1与下一层梯度相乘则可得这一层梯度为-0.20
这样,我们就更接近(下降)局部最小值(也就是说最小的损失)。
反向传播的目的就是更新权重参数:它从最后一个输出的神经元开始, 通过求误差和当前神经元的偏导得到该层的权重更新
ps.关于梯度的进一步理解:
梯度就是对误差值求偏导,梯度总是指向上升最快的方向,也就是下图中垂直于曲线的部分,梯度的步长成为η,也叫做学习率。
学习率不能太低导致收敛的速度缓慢,也不能太高导致找不到局部最小值。
2.交叉熵
2.1 熵的定义:
熵在一定程度上反应了信息量的大小,例子如下:
2.2 交叉熵
Dkl是相对熵,指的是两个信息量之间的差异,如果为0,则相等。
也就是说,要找到P和Q最接近的值,就是找到交叉熵最小的值
3.softmax函数
神经网络可以用在分类问题与回归问题上,不过要根据实际情况改变输出层的激活函数
如果是回归问题,就是用恒等函数
如果是分类问题,就使用softmax函数
基本公式如下:
基本原理如下:
举例:
softmax输出是相互关联的。通过算法设计,Softmax概率总和永远为1。因此,我们想增加一个类别的可能性,则另一个类别必须减少相等的数量。
4.批处理
批处理(Batch Size)对计算机的运算大有利处,可以大幅缩短每张图像的处理时间。
在神经网络的运算中,当数据传送成为瓶颈时,批处理可以减轻数据总线的负荷(严格地讲
相对于数据读入,可以将更多的时间用在计算上)。也就是说,批处理一次性计算大型数组要比分开逐步计算各个小型数组速度更快。
4.1 相关概念
(1)Sample (样本)
样本是单行数据,一个完整的样本,包含了多个输入到算法中的输入项,以及用于与预测进行比较并计算误差的一个输出项。
训练数据集包含许多行数据,也可以说包含了很多样本,样本也可以称为:实例,观察值,输入向量或特征向量。
(2)Epoch
一个Epoch,指的是整个数据集被前向传递和后向传递到神经网络一次。然而,当我们的数据集太大时,无法一次性把整个数据集输入,因此,需要把一个Epoch划分成几个小的 Batches,分批处理。
(3)Batch Size(批处理量)
划分出来的每一小块对应的样本数量
(4)Iterations(迭代次数)
lterations指需要计算多少个batch 才能完成一个Epoch。这个需要计算的batch数就是lteration
举例:
我们的数据集有2000个训练Sample (样本)。我们可以把这2,000个Sample (样本)划分成4个Batches,每个Batch Size是500个Sample (样本)。当我们完成4个lterations的训练后,我们就完成了1个Epoch的训练。
在这里,Batch Size 是500,lterations是4,Epoch是1,总的Sample (样本)数量是2,000。