Advertisement

Week1 Machine Learning Revisited & Introduction to Deep Learning and Feedforward Neural Networks

阅读量:

目录

一、机器学习的历史

二、机器学习三要素

三、机器学习里两大主要任务

四、判别式机器学习(Discriminative machine learning )

五、三种常见的深度网络

六、前向传播(Forward propagation)


一、机器学习的历史

二、机器学习三要素

1、数据:

2、模型:

3、评价指标:准确率、召回率、精确度

三、机器学习里两大主要任务

1、分类(Classification )-给定具体的lable

2、回归(Regression

3、 ML 中的其他任务包括密度估计、聚类、异常检测、推荐、预测和排名

四、判别式机器学习(Discriminative machine learning )

1、定义:

eg:

  • 二分类模型
    • 线性回归
    • 单层神经网络模型
    • 集成学习模型
    • 最大间隔分类器

优点:
(1)分类边界更加灵活,在相较于仅依赖概率方法或生成模型构建的分类器而言,则展现出了更高的复杂度与适应性
(2)该方法能够明确地区分多种类别间以及单一类别与其他类别间的显著特征
(3)这种技术特别适用于处理多类别识别问题
(4)判别模型相比生成模型具有更为简单的结构相对容易训练

缺点:
(1)无法揭示训练数据的特性特征,并非仅仅能告知是1还是2;整个场景无法全面呈现
(2)采用不可见性的黑盒操作方式,在分析变量之间的关系时存在局限性

与判别式方法相对立的是生成模型(Generative Model),它在概率统计与机器学习领域中被视为一类关键的技术框架,在该框架下构建了一系列用于模拟产生观测数据的过程。

eg:

  • 高斯型混合模型(Gaussian型混合模型)
  • 潜在马尔可夫模型(Potential Markov model)
  • [Naive Bayes分类器系统(Naive Bayes分类器系统)]( "朴素贝叶斯分类器系统(Naive Bayes分类器系统)")

优点:(1)实际上带的信息比判别模型丰富

(2)研究单类问题比判别模型灵活性强

(3)能用于数据不完整情况

(4)很容易将先验知识考虑进去

缺点:(1)容易产生错误分类

(2)学习和计算过程比较复杂

在discriminative machine learning领域中,广泛使用的激活函数(activation function)用于此处

(1)Softmax(下面进行分类问题会用到)

在多类别分类问题中用作激活函数当一个多类别分类问题涉及超过两个类别时则需要明确各类别之间的归属关系对于长度为K的任意实向量该方法会将其转换为另一个长度同样为K的新向量其中每个元素都被限制在0到1之间并且所有元素之和恰好等于1

在机器学习中, Softmax函数与normal max function存在区别: normal max function仅提供maximum value. 然而, 在 Softmax function中, 较小的输入值会赋予它们较小的概率, 并且所有数值都不会被直接丢弃. 我们可以将其视为 arg max function的一个概率化版本或者'soft' version. 其分母部分综合考虑了所有原始输出值的因素, 因此, Softmax function计算出的概率之间相互关联.

Softmax激活函数的特点:

  • 函数在零点处不可导。
    • 当输入为负时梯度为零这一现象表明,在该区域中的激活状态不会导致权重在反向传播过程中进行更新操作;因此,在训练过程中可能会出现永远无法被激活的"死亡神经元"。

(2)Sigmoid

该Sigmoid函数在生物学领域被广泛认可为典型的S型曲线,并被称为增长曲线的一种典型形式。因其单调递增特性以及其反函数的单调递增特性,在深度学习领域常被采用作为神经网络的关键组件——激活函数,在此区间内实现数值的规范性处理。

Sigmoid函数的导数可以用其自身表示:(重要性质)

Sigmoid函数的特性与优缺点:

  • 该函数的输出值限定在0至1之间 。它通过 squash操作将神经元激活值压缩到此范围内。
  • 该模型通过Sigmoid函数将预测概率映射至0到1的范围 。这种设计使得其非常适合用于分类问题中的概率估计。
  • 梯度平滑 ,避免出现跳跃式的输出变化情况。
  • 该函数具有可导性特征 ,在任何两点间都能确定其斜率数值。
  • 模型能够提供明确预测结果 ,即其输出结果通常会趋近于极端值(如接近1或0)。
  • 由于该函数输出不在零中心位置附近分布 ,这会间接影响权重更新效率。
  • 计算资源消耗较高时使用该函数可能会影响系统的运行速度。

Sigmoid函数及其导数的图像:

Sigmoid函数及其导数的图像

(3)Tanh

双曲正切函数属于双曲函数的一种类别,在数学领域中通常使用符号tanh进行表示。该函数成功克服了Sigmoid输出不居中所带来的挑战,并且在处理幂运算方面也展现出一定的优势。然而,在梯度消失的问题上仍面临挑战,并且其计算复杂性可能影响实际应用效果。

tanh函数的图像:

anh函数的图像

(4)ReLU(Rectified linear unit)

修正线性单元ReLU被广泛认为是一种人工神经网络中常用的激活函数;它通常被视为以斜坡函数及其变种为代表的非线性激活方式。

线性整流函数(ReLU函数)的特点:

  • 当激活值为正时,则不会出现梯度消失现象。
  • 其计算效率显著高于Sigmoid和tanh函数。
  • 死亡ReLU现象。当输入为负值时,则无法产生任何激活值,在正向传播过程中这并不构成问题。然而,在某些区域神经元对输入的变化较为敏感,在另一些区域则较为不敏感。值得注意的是,在反向传播过程中若输入值为负数,则会导致梯度完全消失(即梯度为零),这一现象与Sigmoid和tanh函数所面临的问题具有相同的性质。
  • 由于ReLU输出始终非负(即大于等于零),因此它并不是一个以0为中心的激活函数。

线性整流函数(ReLU函数)的图像:

在线性整流函数(ReLU函数)的图像

(5)Leaky ReLU

它是一种专门设计用于解决Dead ReLU问题的激活函数:

Leaky ReLU函数的特点:

  • Leaky ReLU函数为了将x中微不足道的线性部分赋予负输入端赋值为-0.01x来解决零梯度的问题。
  • Leaky设计有助于扩展ReLU的有效范围,并且通常α取值在约0.01附近。
  • Leaky ReLU能够覆盖从负无穷到正无穷的所有数值范围。

Leaky ReLU函数的图像:

Leaky ReLU函数的图像

4、判别式机器学习解决分类问题

(1)具体流程

通过采用discriminative value的最大值作为基准来预测

at y

判别函数h(x) 采用Softmax作为激活函数,在将实数值判别分数(discriminatives)映射至概率范围[0,1]的同时保持原始顺序

注:

h^{m}

表示将输入的类x归类于类m的概率,其中1 ≤ 𝑚 ≤ 𝑀

看一个用softmax处理分类的例子:

(3)交叉熵损失函数(Cross-entropy loss)

  • 计算两个类p和q之间的交叉熵:
  • 两个类之间的交叉熵一定大于单个类的信息熵。
  • 交叉熵的计算:

这里y是一个真值表的向量,p值表示y中每个元素对应预测的概率

One-Hot Vector Form: The one-hot encoded representation is defined as a vector where all elements are zero except for a single element set to one at the yth position, i.e., \mathbf{x}_y = [0,\ldots,0,1,y,0,\ldots,0] which essentially represents a one-hot encoding for a class.

eg:

  • 将交叉熵用到判别式机器学习的分类问题中

用softmax来就得h(x)所对应概率值p(x),这里的p(x)就是交叉熵中的p值:

(4)整个训练集的损失函数

rac{1}{N}um_{N}^{i=1}l

所以用交叉熵作为损失函数可得整个训练集的损失函数:

5、判别式机器学习解决回归问题

(1)具体流程

(2) 我们用只用判别函数h(x)来预测f(x)的值,即

at y = f := h

(3)可选择的损失函数

  • L1损失函数

L1损失函数也被叫做最小化绝对误差(Least Absolute Error)。这一名称具有很强的表现力。LAE即旨在最小化观测值与预测值之间的差异。

y_i

和预测值

f

之间差值D_L_{1} 的绝对值的和。

这里的其实就是平均绝对误差(MAE), 使用

L_1

损失函数也就是min ⁡.

  • L2损失函数

使用L2损失函数也被称为最小化平方误差(Least Square Error)。即最小化预测值与观测值之间的差异。

y_i

​和预测值

f

之间差值D_L_{2}的平方的和。

这里的其实就是平均绝对误差(MAE),使用L2损失函数也就是min

L1和L2 损失函数区别

L²损失函数是应用最为广泛的损失函数之一,在回归分析中它即我们广为人知的最小二乘法。当满足高斯-马尔科夫条件时,则能够证明基于L²损失得到的参数估计量不仅无偏而且有效。

但是,L1损失函数也有其自己的优点,下面我们对两个损失函数进行比较:

稳健性
尽管L1损失函数具有很强的稳定性(强健性),但在处理异常观测时表现得更加鲁棒。具体而言,在面对存在较大误差的数据点时(即那些具有显著偏差的观测),使用L1损失函数会表现出较低的敏感度。这是因为相比于仅仅增加一个线性递增的误差项(如绝对偏差),平方偏差会随着误差增大而迅速放大其对模型的影响程度。因此,在处理极端值或噪声较大的数据时(即当数据集中存在异常值时),选择使用L1损失函数往往能够提供更为稳定的结果;然而,在需要将较大误差的数据点纳入模型以提高整体拟合效果的情况下(即当希望模型能够更好地适应较大偏差的数据点),则更适合采用L2损失函数作为目标函数的选择标准。

解的稳定性
在求解效率方面,采用 L_2 损失函数能够确保其在整个定义域内均具有一阶连续可导性,在优化过程中能够方便地通过解析方法直接获得最优解;相比之下,在零点附近区域中存在不可导的情况,则会导致无法直接应用解析方法求得稳定且唯一的最优解;
另外一项关键因素是模型对数据扰动的敏感性问题:当数据发生轻微的变化时(如测量误差或噪声干扰),基于L_1范数的距离度量会因为绝对值函数在其定义域内的一阶导数不连续而导致优化结果对该微小扰动具有更高的敏感度和波动性

五、三种常见的深度网络

1、多层前馈神经网络(Multilayered feedforward neural nets)

用于处理向量、一维张量

对于输入的

h^{0}

= x一共有x1,x2,x3,x4,x5五个输入变量,则在第一层

h^{1}

对于第一个值而言(一共10个值):

h^{1}

=

x_{1} imes w_{1} + b_{1}+x_{2} imes w_{2} + b_{2}+x_{3} imes w_{3} + b_{3}+x_{4} imes w_{4} + b_{4}+x_{5} imes w_{5} + b_{5}
h^{1}

等等于上面方法计算类似,直到计算到最后一层

h^{L}

2、卷积神经网络( Convolutional neural nets)

用于处理图像、2D/3D 张量

3、循环神经网络( Recurrent neural nets)

用于处理序列、句子

六、前向传播(Forward propagation)

1、分类问题的前向传播伪代码:

  • 执行流程:
  • 参数说明(激活函数)

2、回归问题的前向传播伪代码:

  • 执行流程:
  • 参数说明:

3、前向传播的例子:(分类问题)

每一个隐藏层采用sigmoid函数,最后一层输出采用softmax函数

4、模型参数优化:

model parameters(weight matrices and biases):权重矩阵w和偏差b

一般采用SGD, Adagrad, Adam, RMSProp算法去优化这两个参数:

5、前向传播的例子

(1)首先我们先构建一个简单的网络层作为例子:

在该网络层次中包含三层结构:第一部分为输入子网(第一层),其中包含神经元i₁和i₂;其后为隐藏子网(第二层),其中包含两个隐藏单元h₁和h₂;最后一部分为输出子网(第三层),其中包含两个输出单元o₁和o₂。在构建这一网络架构时,默认采用sigmoid函数作为激活函数进行计算。

给定输入数据 i1: 0.02, i2: 0.04 和偏置项 b1:0.4, b2:0.7 ,预期的目标值为 o1:0.5, o2:0.9 。这些未知的参数需要通过优化算法进行求解以达到预期的目标值。

先假如构造一个权重w1,w2,w3.....w8的值,通过计算获取到最佳的w1,w2,w3....w8的权重

权重的初使值:

复制代码
 w1=0.25 w2=0.25

    
 w3=0.15 w4=0.20
    
 w5=0.30 w6=0.35
    
 w7=0.40 w8=0.35

(2)开始 前向传播

  • 输入层到隐含层:

NET(h1)=w1i1+w2i2+b1=0.250.02+0.250.04+0.4=0.005+0.01+0.4=0.415

神经元h1到输出h1的激活函数是sigmoid

OUT(h1)=1/(1+e^(-NET(h1)))=1/(1+0.660340281)=0.602286177

同理我们也可以获取OUT(h2)的值
NET(h2)=w3i1+w4i2+b1=0.150.02+0.200.04+0.4=0.003+0.008+0.4=0.411
OUT(h2)=1/(1+e^(-NET(h2)))=1/(1+0.662986932)=0.601327636

  • 从隐含层到输出层

求取神经元o₁, o₂的输出值与其运算方式与上一层相似

同理
NET(o2)=w7h1+w8h2+b2=0.40.602286177+0.350.601327636+0.7=0.240914471+0.210464672+0.7=1.151379143
OUT(o2)=1/(1+e^(-NET(o2)))=1/1.316200383=0.759762733
o1:0.748598311 o2:0.759762733 距离我们期望的 o1:0.5 o2:0.9 还是有很大的距离

  • 计算总误差

也就是我们需要计算每个期望误差的和

E(total)= E(o0)+E(o1)

=(1/2)*(0.748598311-0.5)2+(1/2)*(0.759762733-0.9)2

=0.01545028+0.009833246=0.025283526

全部评论 (0)

还没有任何评论哟~