学习目标与要求 1. 掌握机器学习的基本概念。 2. 掌握监督学习的基本流程。 3. 掌握线性回归和逻辑回归算法。 4. 掌握随机梯度下降的基本原理及应用。 机器学习 本章主要介绍监督学习的基本概念、线性回归、逻辑回归、随机梯 度下降等内容。如果了解相关知识的读者可以跳过此章,直接进入下一 章内容的学习。 3.1 基本概念 机器学习是让机器模拟人进行学习的过程。机器学习的输入是数据 以及标注,输出是学习得到的知识。 人学习的过程:人通过做习题,利用习题答案校验,学会知识。 机器学习的过程:机器挖掘数据,利用数据标注校验,学会知识。 传统的机器学习一般分为监督学习和无监督学习。监督学习包括回 归、分类等,非监督学习包括聚类、降维等。本章内容作为值函数近似 法的预备知识,仅关注有监督的机器学习方法,即监督学习方法。 机器学习初学者很容易被机器学习中的向量是否转置弄糊涂。 本节首先明确一下数学符号,在几乎所有机器学习教材中,出现的 向量都默认为列向量。记特征向量为 xi,若有 n 个特征,则特征向量的 大小为 |xi| = n。 本书中出现的向量均默认为列向量,加入转置后变为行向量。 xi 表示列向量, x =26664 xi1 xi2 ... xin 37775 (3.1) 38 记训练集为 D,训练集大小为 |D| = m,训练集中的一个训练样本记为 di ∈ D, di = (xTi , yi) = (xi1, xi2, · · · , xin, yi) (3.2) 数据集 D 是数据 di 的集合,本质上 D 是一个矩阵,这个矩阵的每一行是一条数 据 di,有 D = 2666664 d1 d2 ... dm 3777775 = 2666664 xT1 , y1 xT2 , y2 ... xT m, ym 3777775 (3.3) 记 D = (X, y),其中 X 为矩阵,y 为列向量, X = 2666664 xT1 xT2 ... xT m 3777775 , y = 2666664 y1 y2 ... ym 3777775 (3.4) 图 3.1 给出了监督学习的框架。监督学习包括两个过程:学习(也可称为训练)、预 测。从训练集中学习得到模型的过程为学习阶段;利用学习得到的模型对未知数据进行 预测的过程为预测阶段。 在学习阶段,面对待决策的样本,机器采用某个模型作出预测;通过某个指标,将 决策的结果与数据的标注进行核对,判断决策结果的正确性;通过某个算法修正模型, 最终完成学习的过程。 图 3.1 监督学习的框架 监督学习包括三个重要元素:模型、指标和算法。 (1) 模型:用于做出决策,y = f(w; xT)。 (2) 指标:用于评价模型,L(w) = loss(y, .y)。 39 (3) 算法:用于修正模型,w = argmin w (L(w))。 其中,输入的数据用向量 xT 表示,其标注用 y 表示;模型 f 对数据样本 xT 作出 预测,得到预测值 .y;L(w) 表示损失函数(Loss Function),用于衡量本次预测值与真 实值的距离;算法的目标是通过学习使机器进步,使得预测值与真实值的差距最小。通 过学习,找到使得损失函数最小的最终模型。监督学习的流程如图 3.2 所示。 图 3.2 监督学习的流程 3.2 线性回归 回归研究的是输入变量和输出变量之间的关系。回归模型等价于函数拟合,回归用 一条函数曲线拟合已知数据,然后将拟合得到的函数用于预测未知数据。回归属于监督 学习,输入的数据是有标注的。回归的输入可以是离散的,也可以是连续的,输出结果 是一个连续值。 从不同的视角,回归又可被分为多个种类。按照输入变量的个数,可分为一元回归 (只有一个自变量)和多元回归(至少有两个自变量)。按照模型的类型,可分为线性回 归和非线性回归。线性回归(Linear Regression)理论上可简称为 LR,然而,在实际应 用中,这个简称被逻辑回归(Logistic Regression)占用。回归的分类如图 3.3 所示。 本节的重点是介绍多元线性回归,接下来深入剖析多元线性回归的建模过程。 首先分析模型,寻找多元线性回归模型的数学表达。最简单的线性方程可以写为 y = kx + b = k . x + b . 1 = "x 1#T · "k b#= xTw (3.5) 其中,xT = [x1 x2 · · · xn] 表示行向量。 公式 (3.5) 是一个训练样本的线性回归,拓展至整个数据集,则有 y = Xw (3.6) 其中,X 为矩阵。 由于是在一个已知数据集上建立线性回归模型,因此,数据集 D =< X, y > 是已 知的。此时,回归系数向量 w 是未知的,它就是回归求解的目标。 其次,我们需要设计指标,计算模型预测结果的误差,对采用的线性回归模型进行 评价。线性回归通常采用最小二乘法评价模型的决策,最小二乘法采用平方误差,其表 达式如下 L(w) = n Xi=1 (yi . xTi w)2 = (y .Xw)T(y .Xw) (3.7) 40 图 3.3 回归的分类 建立模型的目标,是让模型预测结果尽可能准,也就是让误差值 L(w) 尽可能小。 因此,我们需要设计算法,求解出使得误差值 L(w) 取最小值时的 w,即 w = arg min w (L(w)) (3.8) 接下来分析如何设计算法求解 w = arg min w (L(w))。 利用求导公式,得到 w = (XTX).1XTy。 下面分析该式子的推导步骤。 为了求解 w = arg min w (L(w)),需要求 L(w) 关于 w 的偏导,并令导函数等于 0, 即 .L(w) .w = 0 (3.9) 损失函数 L(w) 可由式 (3.10) 计算 L(w) = (yT . wTXT)(y .Xw) = yTy . yTXw . wTXTy + wTXTXw (3.10) 首先独立计算上述公式 (3.10) 各个项的偏导,则有 41 8> >>>>>>>>>>><> >>>>>>>>>>>: .yTy .w = 0 .yTXw .w = XTy .wTXTy .w = XTy .wTXTXw .w = 2XTXw (3.11) 将公式 (3.11) 代入公式 (3.10) 中,则有 .L(w) .w = .2XT(y .Xw) = 0 (3.12) 求解得到 w = (XTX).1XTy (3.13) 至此,未知变量 w 可以用已知变量表达,利用最小二乘法建立线性回归模型的过 程结束。 总结线性回归的三大要素: (1) 模型:y = Xw。 (2) 指标:L(w) = (y .Xw)T(y .Xw)。 (3) 算法:w = (XTX).1XTy。 3.3 逻辑回归 逻辑回归(Logistic Regression,LR)虽然名为“回归”,实际上却是一个不折不扣 的分类算法。逻辑回归在工业界被广泛使用,常用于数据挖掘、疾病自动诊断、经济预 测等领域。逻辑回归是工业界算法体系的入门级算法,是工业界算法创新的基线。 本章同样从机器学习三要素入手,分析逻辑回归的模型、指标和算法。其中,模型 用于做出决策,指标用于评价模型,算法用于修正模型。 3.3.1 逻辑回归模型 1. Sigmoid 函数 本节介绍关于 Sigmoid 函数的数学知识。Sigmoid 函数的表达式如下 y = 1 1 + e.z (3.14) Sigmoid 函数的定义域为 [.∞,+∞],而值域为 [0, 1]。Sigmoid 函数可以将一个实 数单调地映射到 0 至 1 的区间内,这正好是概率的取值范围。在很多情况下,Sigmoid 函数的输出被看作事件发生的概率。 Sigmoid 函数的图像如图 3.4 所示。 42 图 3.4 Sigmoid 函数的图像 Sigmoid 函数在 |z| 相对较小的时候,变化率最大。 Sigmoid 函数的一阶导函数在机器学习算法中经常被使用。Sigmoid 函数的一阶导 函数为 f′(z) = e.z (1 + e.z)2 = 1 1 + e.z × e.z 1 + e.z = y × (1 . y) (3.15) 经过推导,最终得到 Sigmoid 函数的一阶导数结果为 y(1 . y)。 2. 模型的数学表达 本节介绍逻辑回归的模型及其数学表达。 本书中出现的所有向量均默认是列向量。在数据集 D 的矩阵中,一条数据是一行, 则其表达式可写作 di = (xT, y)。拓展到整个数据集,则有 D = 2666664 d1 d2 ... dm 3777775= 2666664 xT1 , y1 xT2 , y2 ... xT m, ym 3777775 = (X, y) (3.16) 其中, X = 2666664 xT1 xT2 ... xT m 3777775 , y = 2666664 y1 y2 ... ym 3777775 (3.17) 在线性回归的学习中,我们直接对 X 和 y 进行计算。这主要是因为,在线性回归 的建模过程中,所有计算都可以用矩阵计算表示。逻辑回归则不然,它引入了 Sigmoid 函数。因此,本章的公式推导将从单个样本的计算说起。 43 逻辑回归的表达式为 yi = 1 1 + e.xTi w (3.18) 其中,输入 xTi (xTi 为行向量)为 n × 1 的特征向量,输出 yi 为概率值,表示输入 xTi 为正例的概率。 令 zi = xTi w,则逻辑回归模型的数学表达为 yi = 1 1 + e.zi (3.19) 可以看出,该式与 Sigmoid 函数的定义式一样。 逻辑回归是输入经线性变换(zi = xTi w)并叠加 Sigmoid 函数 yi = 1 1 + e.zi  后产生输出的过程。Sigmoid 函数通常也被称作逻辑函数(Logistic Function)。 Sigmoid 函数与逻辑回归密不可分。借助 Sigmoid 函数,重写公式 (3.18) 得到 y = Sigmoid(xTw) = 1 1 + e.xTw (3.20) 其中,xTw 是 x 的线性求和。 建立逻辑回归模型的过程,本质上就是利用数据求解参数 w 的过程。先明确已知 条件和未知目标。公式 (3.20) 中,x 是输入的特征向量训练集,是已知样本。样本对应 的真实值向量 y 也是已知的,只有模型的参数 w 是未知的。 因此,逻辑回归建模的目标,就是通过训练集合的 < X, y > 求解“最合适”的系 数向量 w 的过程。这里的“最合适”可理解为错误概率最低。 3.3.2 逻辑回归指标 1. 极大似然估计 首先需要了解一下极大似然估计,这是掌握逻辑回归损失函数的预备知识。 似然(Likelihood)的意思是可能性。似然估计,就是可能性的估计。极大似然,就 是最大的可能性。因此,极大似然估计,字面含义就是:未知事物有很多可能性,我们 采用可能性最大的情况对未知事物进行估计。 一般来说,事件 A 发生的概率与某一未知参数 θ 有关。随着 θ 取值的不同,事件 A 发生的概率 P(A) 也不同,当在一次试验中事件 A 发生了,则认为此时的 .θ 值应是 其所有可能取值中使 P(A|θ) 达到最大的那一个。极大似然估计法就是要选取 .θ 作为参 数 θ 的估计值,使所选取的样本在被选的总体中出现的可能性最大。 为了实现这个极大似然估计,一般包括以下两步:似然,建立似然函数;极大似然, 求解似然函数的极大值,并对未知事物进行估计。 例 3.1 设甲箱中有 9 个红球,1 个蓝球;乙箱中有 1 个红球,9 个蓝球。随机取 出一个箱,再从中随机取出一个球,发现该球是蓝球,如图 3.5 所示。利用极大似然, 估计这个球来自甲箱还是乙箱。 44 图 3.5 例 3.1 图示 解 遵循极大似然估计的两个步骤,逐步分析。 (1) 似然,建立似然函数。 假设 A 事件为小球最终的颜色,B 事件为这个小球来自哪个箱子,则事件“随机 取出一个箱子,再从中随机取出一个球,发现该球是蓝球”的似然函数为 P(B|A = 蓝)。 (2) 极大似然,求解似然函数的极大值。 甲箱中蓝色球的概率为 P(A = 蓝|B = 甲) = 0.1,乙箱中蓝色球的概率为 P(A = 蓝|B = 乙) = 0.9。 随机选取箱子,则选中甲箱的概率为 P(B = 甲) = 0.5,选中乙箱的概率为 P(B = 乙) = 0.5。 两个箱子合在一起后,红色球与蓝色球数量相等,则有 P(A = 蓝) = 0.5。 根据条件概率公式,有 P(B|A = 蓝) = P(A = 蓝|B) × P(B) P(A = 蓝) = P(A = 蓝|B) (3.21) 所以,似然函数可以转化为 P(B|A = 蓝) = P(A = 蓝|B) =8<: 0.1, B = 甲 0.9, B = 乙 (3.22) 发现其极大值是 0.9,而且这个极大值发生在 B = 乙 的情况。所以,利用极大似 然估计,这个球来自乙箱。 接下来,我们给出极大似然估计的数学抽象表达式。 (1) 似然,建立似然函数。 先假设最终要估计的参数值 θ 是已知的,经过 N 次试验后,得到试验结果集合为 EXP = {exp1, exp2, · · · , expN},计算试验结果的似然函数,得到 L(θ) = P(EXP|θ) = NYi=1 P(expi |θ) (3.23) 一般情况下,会对似然函数取对数,得到对数似然函数: lnL(θ) = ln P(EXP|θ) = N Xi=1 ln P(expi |θ) (3.24) 45 (2) 极大似然,求解对数似然函数的极大值。 求解对数似然函数的极大值,并用极大值时的参数 .θ 作为最终结果,即 .θ = arg max(lnL(θ)) (3.25) 例 3.2 设样本服从正态分布 N(μ, σ2),用极大似然法估计正态分布的参数 μ 和 σ。 解 (1) 建立似然函数。 L(μ, σ2) = NYi=1 P(xi|μ, σ2) = NYi=1 1 √2πσ e.(xi.μ)2 2σ2 (3.26) 通常会对似然函数取对数,将难以求解的连乘运算转化为容易求解的求和运算。 lnL(μ, σ2) = N Xi=1 hln 1 √2πσ . (xi . μ)2 2σ2 i (3.27) (2) 求解使似然函数最大的参数,即用极大似然法估计参数的结果。 求对数似然函数的偏导 8> ><> >: . lnL(μ, σ2) .μ = 0 . lnL(μ, σ2) .σ2 = 0 (3.28) 求解式 (3.28),有 8> >>><> >>>: N Xi=1 xi . μ σ2 = 0 . N 2σ2 + N Xi=1 2(xi . μ)2 (2σ2)2 = 0 (3.29) 最终得到 8> >>>><> >>>>: μ = x = 1 N N Xi=1 xi σ2 = 1 N N Xi=1 (xi . x)2 (3.30) 2. 指标的数学表达 继续逻辑回归的主线,先清算一下已知条件和未知目标。 已知条件包括:一定量的有标注数据集 D =< X, y >,以及逻辑回归模型 yi = sigmoid(xTi w)。 未知的目标:逻辑回归模型中的参数,就是 w 向量。 46 指标的数学表达,就是预测值 .y 与真实值 y 的距离,通常被称为损失函数(Loss Function)。 在逻辑回归中,损失函数描述的是一种概率。 先看 D 中的一个样本 di =< xi, yi >。逻辑回归计算输出值为 1 的概率: P(yi = 1|xi,w) = sigmoid(xT i w) = 1 1 + e.xTi w = exTi w 1 + exTi w = Φ(zi) (3.31) 我们将 P(yi = 1|xi,w) 简记为 Φ(zi),其中,zi = xTi w,则有 P(yi = 0|xi,w) = 1 1 + exTi w = 1 . Φ(zi) (3.32) 由式 (3.31) 和式 (3.32) 可以得到更一般的表达式: P(yi|xi,w) = Φ(zi)yi × 1 . Φ(zi)1.yi (3.33) 当 yi = 1 时,式 (3.33) 退化为式 (3.31)。 当 yi = 0 时,式 (3.33) 退化为式 (3.32)。 式 (3.33) 表示,针对一个样本 di,预测结果等于真实结果的概率。扩展到整个样 本集 D,则可采用极大似然估计 L(w) = NYi=1 P(yi|xi,w) = NYi=1 Φ(zi)yi × 1 . Φ(zi)1.yi (3.34) 通常会对似然函数取对数,将连乘运算转化为求和运算,则对数极大似然函数为 l(w) = ln(L(w)) = N Xi=1 yi ln(Φ(zi)) + (1 . yi) ln(1 . Φ(zi)) (3.35) 式 (3.36) 即逻辑回归指标的数学表达,也就是损失函数,用于评价模型的好坏。逻 辑回归损失函数背后的本质,就是极大似然估计,采用可能性最大的情况,对未知事物 进行估计。 3.3.3 逻辑回归算法 根据极大似然估计原理,逻辑回归算法就是求解令对数极大似然函数 l(w) 取最大 值的参数 w。 47 逻辑回归的损失函数为 l(w) = N Xi=1 yi ln(Φ(zi)) + (1 . yi) ln(1 . Φ(zi)) (3.36) 为了求出式 (3.36) 的极大值,直观想法自然是计算其关于 w 的导函数。由于 Sigmoid 函数 Φ(zi) = sigmoid(xTi w) 的导函数为 Φ(zi) . (1 . Φ(zi)),因此有 .l(w) .w = N Xi=1 hyiΦ(zi)(1 . Φ(zi))xi Φ(zi) . (1 . yi)(1 . Φ(zi))Φ(zi)xi 1 . Φ(zi) i (3.37) 化简式 (3.37),得到 .l(w) .w = N Xi=1 {yi(1 . Φ(zi))xi . (1 . yi)Φ(zi)xi} (3.38) 最终,可以得到 .l(w) .w = N Xi=1 (yi . Φ(zi))xi = N Xi=1 (yi . sigmoid(xTi w))xi (3.39) 至此,令 .l(w) .w = 0,得到 N Xi=1 (yi . sigmoid(xTiw))xi = 0 (3.40) 上述式子的求解非常复杂,很难直接写出 w 的表达式,需要借助优化算法来求解 逻辑回归的对数似然函数。 3.4 节将首先介绍随机梯度下降,然后基于随机梯度下降实现逻辑回归算法。 3.4 随机梯度下降 梯度下降法是一种优化算法,常用的有随机梯度下降(Stochastic Gradient Descent) 、批量梯度下降(Batch Gradient Descent)、小批量梯度下降(Mini-batch Gradient Descent)等。本节关注随机梯度下降法,以及基于随机梯度下降实现的逻辑回归 算法。 3.4.1 随机梯度下降法 函数的梯度(.)是个方向向量,是该函数的一阶偏导,表示函数变化最快的方向。 48 一元函数 y = f(x) 在点 x0 处的梯度为 .f(x0) = df dx|x=x0 (3.41) 二元函数 z = f(x, y) 在点 (x0, y0) 处的梯度为 .f(x0, y0) = " .f .x (x0,y0) , .f .y (x0,y0)# (3.42) 由此可见,对于一个一元函数 f(x),梯度是其在某个点 x0 的导数值,记为 .f(x0)。 多元函数 f(x) 的输入 x 为向量,其在给定向量 x0 处的梯度就是一个向量,记为 .f(x0)。这个向量表达的是一个方向,含义是函数的值在这个方向上的变化最大。例 如,在下降时,某个点 x0 的梯度为 .f(x0),意味着该方向最陡,朝这个方向走能最 快下降。 下面以图 3.6 为例,说明随机梯度下降的应用。假设从 P0 点出发下降到达谷底最 低处。根据梯度的计算,发现梯度向量 .P.0.P→1 的方向最陡。为了到达山底最低处,我们 尝试走一小步到达 P1 点(此时 P.1 = P.0 +P..0.P→1)。在 P1 点重复梯度计算,得到梯度向 量 P..1.P→2 的方向最陡,因此又走一小步到达 P2 点(此时 P.2 = P.1 + P..1.P→2)。在 P2 点, 重复前面过程,又到了 P3 点(此时 P.3 = P.2 + P..2.P→3)。经过多次循环,终于到达谷底。 图 3.6 梯度 对上面的过程进行抽象,就是利用梯度方向更新当前的位置,即 .Pn = .Pn.1 + .P.n...1.P→n。这样的下降方法,在不知道谷底在哪时会非常奏效。 随机梯度下降过程中,更新公式为 x = x . α.f(x) (3.43) 随机梯度下降的更新公式引入了学习率 α 这个参数,在建模时,该如何设置它呢? 借助下山问题来直观理解,α 表示每次前进的步长。为了快速到达山底最低处,应 该将 α 设置得大一些以快速前进。然而,过大的 α 可能发生到达跨越山底的情况,也 就是在步子过大的情况下,围绕山底走过来、走过去,却始终到不了山底处的最低点。 图 3.7 给出了不同 α 对梯度下降影响的示意图。 49 图 3.7 学习率的选择 图中,当学习率 α = 0.01 时,步长过小,需要循环很多次才能找到最小值;当学 习率 α = 0.45 时,步长过大,容易出现在最低点附近震荡的情况。而当学习率设置为 α = 0.1 时,步长合适,能快速找到最小值。 在随机梯度下降法中,学习率的选择很重要。合适的学习率取值能助力随机梯度下 降法快速找到最优值。 3.4.2 基于 SGD 实现逻辑回归 随机梯度下降法通过随机抽取一个样本计算梯度,利用梯度值逐步更新参数值。本节介 绍基于随机梯度下降法求解逻辑回归的对数极大似然函数,从而建立逻辑回归模型。 前面内容直接计算损失函数的偏导时,计算公式 (3.40) 面临困难。本节将基于随机 梯度下降法求解逻辑回归的对数极大似然函数。 随机梯度下降过程中,更新公式为 x = x . α.f(x) (3.44) 逻辑回归算法需要求解损失函数,即求解令损失函数 l(w) 取最大值的 w,也就是 令 .l(w) 取最小值的 w。这和下山找山底的例子非常相似,在这里我们进行类比,将 随机梯度下降切换到逻辑回归的场景。在逻辑回归中,每次循环更新 wi 的值。每次循 环前进的“方向”是损失函数 .l(w) 的梯度,即 . .l(w) .w 。而每次循环前进的“一小 步”,可以定义为系数 α,通常被称作学习率。这样,可以得到逻辑回归中的参数更新 公式为 wi = wi.1 + α .l(wi.1) .wi.1 (3.45) 利用上述参数更新公式进行多次循环,就可以找到使得损失函数 l(w) 最大时的 w 的值。但是,公式 (3.45) 的循环效率可能会比较低,因为式中梯度的计算需要在全部的 50 数据集上执行。在多轮循环的过程中会消耗大量的计算资源。 一个优化的办法是,每次循环只随机选择使用一个样本 dm 进行计算。那么,公式 (3.45) 就可以写作 wi = wi.1 + α .l(wi.1) .wi.1 xm (3.46) 回顾式 (3.39) 可知, .l(w) .w = N Xi=1 (yi . sigmoid(xTi w))xi,因此,式 (3.46) 可以 写作: wi = wi.1 + αym . sigmoid(xT mwi.1)xm (3.47) 这种方法,采用一个随机的样本计算梯度,以缩减计算复杂度,并通过多轮循环让 损失函数的值不断下降,最终得到最优化的结果,这就是随机梯度下降法的原理。 式 (3.47) 就是基于随机梯度下降实现逻辑回归算法的参数更新公式,也是逻辑回归 算法的核心。基于式 (3.47),我们给出基于随机梯度下降实现的逻辑回归算法伪代码。 算法 3.1: 逻辑回归算法 输入: 数据集 D = (X, y) 输出: 模型参数 w 1 初始化 w; 2 初始化参数 α; 3 初始化最大循环次数 maxLoop; 4 for i = 0 : maxLoop do 5 随机选择一个样本 (Xm, ym); 6 计算梯度 .w = ym . sigmoid(xT mw)xm; 7 更新参数 w = w + α.w; 8 Return w; 3.5 本章小结 本章提供了机器学习领域的基础知识,这些都是学习强化学习的必备基础。其中, 线性回归与逻辑回归为机器学习领域的两大常用基础算法,通过学习相应内容,可以帮 助读者了解机器学习方法的具体过程和关键要素。除此之外,本章还对机器学习常用优 化算法——随机梯度下降进行了介绍,并将其应用于逻辑回归的求解。 学习目标与要求 1. 掌握神经网络中神经元的结构及实现原理。 2. 掌握感知机的结构及实现原理。 3. 掌握神经网络的构建过程。 4. 了解神经网络训练中的梯度消失现象。 神经网络 神经网络算法是机器学习算法的一种,是深度强化学习的基础。了 解相关知识的读者可以略过此章,直接进入下一章内容的学习。 4.1 神经元 神经元是生物神经系统最基本的结构和功能单元。生物神经元由树 突、细胞体、轴突和突触组成。 (1) 树突:接收其他神经元传送的信号。 (2) 细胞体:具有连接整合输入信息和传递信息的功能。 (3) 轴突:接收外来刺激,然后从细胞体中排出。 (4) 突触:把经过轴突的信号转化为下一个神经元的输入信号。突 触产生的信号有兴奋性和抑制性两种。 人工神经元由输入、激活函数和输出组成,模拟细胞体加工和处理 信号的过程。生物神经元和人工神经元的对比见表 4.1。 表 4.1 生物神经元和人工神经元的对比 生物神经元 人工神经元 作 用 树突 输入层 接收输入数据 细胞体 加权和 加工处理数据 轴突 激活函数 控制输出 突触 输出层 输出结果 激活函数是人工神经元的重要组成部分,当神经元传递兴奋信号时, 52 激活函数应输出 1,当神经元传递抑制信号时,激活函数应输出 0。阶跃函数满足上述 需求,阶跃函数的公式为 u(z) = (1, z . 0 0, z < 0 (4.1) 但是,阶跃函数具有不连续性,实际应用中常采用 Sigmoid 函数作为激活函数。 Sigmoid 函数的公式为 sigmoid(z) = 1 1 + e.z (4.2) 图 4.1 给出了这两种激活函数的函数图,可以看出 Sigmoid 函数是光滑连续的,并 且在实际应用中,其导函数容易被求解。 图 4.1 激活函数例子 以 Sigmoid 函数作为激活函数为例,人工神经元的基本结构如图 4.2 所示。 图 4.2 人工神经元的基本结构 假设输入特征 x 包含两个维度的特征 x1 和 x2,经线性变换后,再经过 Sigmoid 函数,即得到了输出 y。其中输入与输出的关系为 y = 1 1 + e.(w1x1+w2x2) = 1 1 + e.xTw (4.3) 其中,xT = [x1, x2],w = "w1 w2#。 53 4.2 感知机 神经元传递信号的过程就是信息加工、处理、决策的过程。感知机(Perceptron)是 基于神经元构建的,感知机模型是一个线性分类模型,无法对非线性问题建模,其分类 效果通常不是很好。但是,感知机是神经网络和深度学习的基础。掌握感知机的实现原 理有助于理解后续内容。 本节同样从监督学习三要素入手,分析感知机的模型、指标和算法。其中,模型用 于作出决策,指标用于评价模型,算法用于修正模型。 4.2.1 感知机模型 感知机由两层神经元组成,包括输入层和输出层。感知机模型的输入是实例的特 征向量,输出是实例的类别。感知机模型对输入进行加权求和,再利用符号函数(Sign Function)得到输出。感知机的模型框图如图 4.3 所示。 图 4.3 感知机的模型框图 流程上,感知机模型先对所有的输入变量进行加权求和,再用符号函数求出分类的 结果。由于加权求和就是线性求和,且符号函数不会影响数值的相对关系,因此感知机 模型与逻辑回归一样,也是线性模型,无法处理非线性问题(例如异或问题)。 感知机的激活函数为符号函数,记为 sgn。符号函数的公式为 sgn(z) = ( 1, z . 0 .1, z < 0 (4.4) 对于一个输入实例,其特征值分别输入到输入结点中。通过不同的权值 wi 进行加 权求和。最后再使用符号函数 sgn() 对求和的结果进行分类。 感知机模型的数学表达式为 y = sgn(wTx + b) (4.5) 感知机模型就是要通过实例的数据集合,求解出最优的 w 和 b。 54 4.2.2 感知机指标 损失函数衡量预测值与真实值的距离,用于评价模型。损失函数的选择没有标准方 法,损失函数只满足对参数 w 连续可导即可。 假设输入特征 x 包含两个维度的特征 x1 和 x2,感知机模型就是二维空间下一条 用于分类的直线。如果特征空间大于二维,则模型就是高维度空间下的一个超平面。 感知机模型本质上就是希望找到一个超平面,最大可能地将样本实例按照不同的标 签区分开。 因此,可以计算被错误区分的样本点到超平面的距离之和,将其作为感知机模型的 损失函数。 基于上述思路,需要计算空间中的点 x0 到超平面 S 的距离。利用高中数学的知 识,在高维空间 Rn 下,超平面 S 的表达式为 S : wTx + b = 0 (4.6) 特别地,在 n = 2 的二维空间下,公式 (4.6) 退化为 w1x1 + w2x2 + b = 0 (4.7) 也就是 x2 = kx1 + b (4.8) 点到超平面距离的公式为 1 ||w|||wTx0 + b| (4.9) 其中,||w|| 为 w 的 L2 范数,即 ||w|| = qw2 1 + w2 2 + ... + w2n (4.10) 其次,基于公式 (4.9) 计算被错误区分的点到超平面距离之和,可以得到 1 ||w|| Xxi∈M |wTxi + b| (4.11) 其中,M 为所有错误分类的样本点集合。 公式 (4.11) 是损失函数的原始形态,包含大型求和、求 L2 范数、绝对值、集合符 号等复杂运算因子。如果不进行化简,会令人感到异常困扰。 接下来对公式 (4.11) 进行化简。 感知机模型的数学表达式为 y = sgn(wTx + b) = ( 1, wTx + b . 0 .1, wTx + b < 0 (4.12) 55 由于感知机模型的预测值 .y 是符号函数的输出值,因此模型的预测值 .y 必然与加 权求和输出值 wTx + b 同符号。又由于研究样本为错误分类,所以真实值 y 与预测值 .y 的符号不同。因此,对于错误分类的数据样本 (xTi , yi) 来说,wTxi +b 的符号始终与 yi 不同,感知机错误分类的分析见表 4.2。 表 4.2 感知机错误分类的分析 wTx + b 预测值 .y 真实值 y 预测结果 .yi(wTxi + b) + +1 -1 错误分类 + - -1 +1 错误分类 + 将感知机错误分类分析表中所示的错误分类情况用数学公式表达,有 . yi(wTxi + b) > 0 (4.13) 因此,对于所有错误分类的点,公式 (4.13) 的绝对值部分有如下的结果 |wTxi + b| = .yi(wTxi + b) (4.14) 利用公式 (4.14) 修改公式 (4.11),则有 . 1 ||w|| Xxi∈M yi(wTxi + b) (4.15) 对于所有样本的损失值而言, 1 ||w|| 是一个正数,且可被视为常数。因此,式 (4.15) 可以忽略该项。 最终,我们得到感知机模型的损失函数 L(w, b) = . Xxi∈M yi(wTxi + b) (4.16) 感知机模型的损失函数计算了错误分类样本与分类超平面的距离。 4.2.3 感知机算法 感知机模型的参数为 w 和 b,其中,w 是一个列向量,b 是一个标量。感知机算法 的目标是在给定的数据集求解参数 w 和 b,使损失函数最小,即 minL(w, b) = . Xxi∈M yi(wTxi + b) (4.17) 其中,M 为错误分类的点的集合。式 (4.17) 是一个最优化问题,需要对全部错误分类 的样本进行计算。 可以采用随机梯度下降法求解该最优化问题。 56 首先计算式 (4.17) 的梯度。计算损失函数 L(w, b) 关于所有自变量的偏导 8> >>><> >>>: .L(w, b) .w = . Xxi∈M yixi .L(w, b) .b = . Xxi∈M yi (4.18) 随机梯度下降法采用一个随机的样本计算梯度以缩减计算复杂度,让损失函数的值 不断下降,最终得到最优化的结果。既然是随机选取一个样本,那么式 (4.18) 中的求和 符号就可以消失。因此,参数更新的规则为 8<: w ← w + ηyixi b ← b + ηyi (4.19) 其中,η 是学习率,通常设置为 0~1 的小数。具体算法流程如下。 算法 4.1: 感知机算法 输入: 数据集 D = (X, y) 输出: 最优模型的参数 w、b 1 初始化 w、b; 2 初始化学习率 η; 3 初始化最大循环次数 maxLoop; 4 for i = 0 : maxLoop do 5 随机选择一个样本 dm = (Xm, ym); 6 利用当前的模型对 dm 进行预测; 7 if yi . (wTxi + b) . 0 then 8 w ← w + ηyixi; 9 b ← b + ηyi; 10 return w,b; 11 得到最终模型:y = sgn(wTx + b); 例 4.1 利用感知机模型建立位运算“与”的模型。 解 首先分析“与”运算的规则,见表 4.3。因为感知机模型的预测值为 1 和 +1, 所以我们将位运算结果的 0 用 .1 替换。 表 4.3 “与”运算的规则 样本编号 x1 x2 x1 and x2 y 1 0 0 0 -1 2 1 0 0 -1 3 0 1 0 -1 4 1 1 1 1