神经网络------ 学习与感知器
01 人工神经网络
人工神经网络的核心能力
- 函数计算能力:通过合理选择网络拓扑结构与权重值,人工神经网络(ANN)可计算任意可计算函数。
- 经验学习能力 :通过"试错法"(trial-and-error)从经验中学习,具体流程为:
- 尝试(Trial):处理输入以生成输出(从神经网络角度:计算给定输入对应的输出函数)。
- 评估(Evaluate):将实际输出与期望输出对比,评估输出效果。
- 调整(Adjust):根据评估结果调整网络权重。
感知器(M-P模型)
基本公式
感知器的输出由硬极限函数(hardlim)决定,公式如下:
y=hardlim(u)=hardlim(WX+b)=hardlim(w1,1x1+w1,2x2+θ)y=\text{hardlim}(u)=\text{hardlim}(WX+b)=\text{hardlim}\left(w_{1,1}x_{1}+w_{1,2}x_{2}+\theta\right)y=hardlim(u)=hardlim(WX+b)=hardlim(w1,1x1+w1,2x2+θ)
(其中WWW为权重矩阵,XXX为输入向量,bbb为偏置,θ\thetaθ为阈值,此处b=θb=\thetab=θ)
单层神经网络
- 左侧神经元(a₁、a₂、a₃):仅具备输入功能,不参与计算。
- 右侧神经元 :计算神经元,通过激活函数处理输入与权重的乘积和,公式为:
z=g(a1⋅wa+a2⋅wb+a3⋅wc)z=g(a_1 \cdot w_a + a_2 \cdot w_b + a_3 \cdot w_c)z=g(a1⋅wa+a2⋅wb+a3⋅wc)
(ggg为激活函数,wa、wb、wcw_a、w_b、w_cwa、wb、wc为对应输入的权重)
简单神经网络的局限性(以感知器为例)
- 核心局限(明斯基与佩珀特,1969年提出) :
感知器仅能构建线性判别函数,即仅能对可通过直线或超平面分割的类别进行分类。 - 非线性问题无法解决 :
多数实际函数具有非线性特征(或数据不可线性分割),单层感知器无法处理此类问题。典型案例为异或(XOR)逻辑运算,其真值表如下:
| 输入x₁ | 输入x₂ | 输出y |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |
- 解决方案 :引入多层神经网络(含隐藏层),通过多个神经元的组合实现非线性分类(如异或运算需至少2个神经元协同工作)。
多层神经网络结构
1. 双层神经网络
- 包含输入层、隐藏层、输出层,其中"双层"指2个激活层(隐藏层+输出层)。
- 输入节点(I₁、I₂、I₃、I₄)接收外部信号,传递至隐藏节点,隐藏节点经计算后将信号传递至输出节点(O₁)。
2. 三层神经网络
- 结构:输入层→隐藏层1→隐藏层2→输出层,通过多隐藏层进一步增强非线性拟合能力。
3. 多层前馈神经网络(Multi-layer Feed-forward ANNs)
- 单输出感知器(M-P模型):输入层直接连接单输出层,仅含输入层与输出层。
- 多输出感知器(罗森布拉特提出) :输入层连接多输出层(如Z₁、Z₂),每个输出对应独立的权重计算,公式为:
z1=g(a1⋅w1+a2⋅w2+a3⋅w3)z_1=g(a_1 \cdot w_1 + a_2 \cdot w_2 + a_3 \cdot w_3)z1=g(a1⋅w1+a2⋅w2+a3⋅w3)
z2=g(a1⋅w4+a2⋅w5+a3⋅w6)z_2=g(a_1 \cdot w_4 + a_2 \cdot w_5 + a_3 \cdot w_6)z2=g(a1⋅w4+a2⋅w5+a3⋅w6) - 权重表示规则 :用Wx,yW_{x,y}Wx,y表示权重,其中xxx为前一层神经元编号,yyy为后一层神经元编号,神经元编号按"从上到下"顺序排列。
多层前馈神经网络的发展(1969-1984年)
- 核心突破 :引入隐藏层节点,允许使用非线性激活函数,使神经网络具备非线性分类能力。
- 激活函数改进 :采用可微的非线性函数(如Sigmoid函数f(a)=11+e−af(a)=\frac{1}{1+e^{-a}}f(a)=1+e−a1),输出连续且非线性质,更贴近真实神经元的信号传递特性。
02 损失函数
基本概念与示例背景
以CIFAR-10数据集(含飞机、鸟、猫、鹿等10类图像)的线性分类器为例,线性分类器的输出公式为:
f(xi;W,b)=Wxi+bf(x_i; W, b)=Wx_i + bf(xi;W,b)=Wxi+b
(WWW为权重矩阵,bbb为偏置,xix_ixi为输入图像的像素数组,CIFAR-10图像为32×32×3的像素矩阵,共3072个像素值,取值范围0-1)
1. 损失函数(Loss Function)
- 定义:基于单个样本计算的误差,用于衡量模型对单个样本的预测偏差。
- 常见类型 :
(1)0-1损失函数 :直接计算预测值与真实值的绝对差,公式为:
L(f(x),y)=∣f(x)−y∣L(f(x), y)=|f(x)-y|L(f(x),y)=∣f(x)−y∣
(2)平方损失函数 :计算预测值与真实值差值的平方,适用于回归任务。
(3)绝对值损失函数:计算预测值与真实值差值的绝对值,对异常值鲁棒性高于平方损失。
2. 代价函数(Cost Function)
-
定义:基于全部训练样本的平均误差,即所有损失函数的平均值,用于衡量模型在整体训练数据上的偏差。
-
常见类型 :
(1)均方误差(MSE) :适用于回归任务,公式为:
MSE=1N∑i=1N(y(i)−f(x(i)))2MSE=\frac{1}{N}\sum_{i=1}^{N}\left(y^{(i)}-f(x^{(i)})\right)^2MSE=N1∑i=1N(y(i)−f(x(i)))2(NNN为训练样本总数,y(i)y^{(i)}y(i)为第iii个样本的真实值,f(x(i))f(x^{(i)})f(x(i))为预测值)
(2)平均绝对误差(MAE) :适用于回归任务,公式为:
MAE=1N∑i=1N∣y(i)−f(x(i))∣MAE=\frac{1}{N}\sum_{i=1}^{N}\left|y^{(i)}-f(x^{(i)})\right|MAE=N1∑i=1N y(i)−f(x(i))(3)交叉熵代价函数 :适用于分类任务,衡量真实概率分布p(x(i))p(x^{(i)})p(x(i))与模型预测概率分布q(x(i))q(x^{(i)})q(x(i))的差异,公式为:
H(p,q)=−∑i=1Np(x(i))logq(x(i))H(p, q)=-\sum_{i=1}^{N}p(x^{(i)})\log q(x^{(i)})H(p,q)=−∑i=1Np(x(i))logq(x(i))
3. 目标函数(Objective Function)
- 定义 :与代价函数类似,基于全部训练样本的平均误差,但更强调"优化目标"------即需通过调整模型参数(如权重WWW、偏置bbb)最小化的函数。
- 核心目标 :对从某分布DDD中随机选取的样本(x,y)(x,y)(x,y),最小化损失函数Loss(f(x),y)Loss(f(x), y)Loss(f(x),y)。
- 实际计算 :由于未知真实分布DDD,通常用训练数据的平均损失近似目标函数,公式为:
L(θ)=1n∑i=1nLoss(fθ(xi),yi)L(\theta)=\frac{1}{n}\sum_{i=1}^{n}Loss(f_{\theta}(x_i), y_i)L(θ)=n1∑i=1nLoss(fθ(xi),yi)
(θ\thetaθ为模型参数集合,nnn为训练样本数)
交叉熵损失的解读
- 惩罚机制 :对正确标签yyy的预测概率pyp_ypy,惩罚项为−logpy-\log p_y−logpy------若预测概率越接近1(预测越准确),惩罚越小;若接近0(预测越错误),惩罚趋近于无穷大。
- KL散度关联 :交叉熵可视为KL散度(Kullback-Leibler divergence)的简化形式,用于衡量两个概率分布的"距离",当真实分布ppp固定时,最小化交叉熵等价于最小化KL散度。
03 罗森布拉特感知器
基本结构与异或运算示例
- 结构组成:输入层(2个神经元,接收XOR的两个输入)、隐藏层(2个神经元,处理非线性转换)、输出层(1个神经元,输出最终结果)。
- 核心逻辑:通过隐藏层对输入进行线性组合,再经输出层整合,实现异或运算的非线性分类(单层感知器无法完成)。
工作流程(以异或运算为例)
- 初始化 :随机设置权重www与偏置bbb的初始值。
- 输入数据:导入异或运算的真值表(如输入(0,0)、(1,0)等)。
- 循环迭代(试错法) :
- 读取输入:如输入(0,0)。
- 计算输出:通过感知器公式计算预测输出(如0.60543)。
- 误差对比 :计算预测输出与期望输出的差值(如Diff=0.60543−0=0.60543Diff=0.60543-0=0.60543Diff=0.60543−0=0.60543)。
- 调整参数:根据误差修改权重与偏置。
- 终止条件:达到预设迭代次数,或误差小于设定阈值。
计算示例(学习率η=1)
已知条件
- 输入样本:x1=(4,4)x_1=(4,4)x1=(4,4)(真实标签y1=1y_1=1y1=1)、x2=(4,5)x_2=(4,5)x2=(4,5)(真实标签y2=1y_2=1y2=1)、x3=(1,1)x_3=(1,1)x3=(1,1)(真实标签y3=−1y_3=-1y3=−1)。
- 初始权重与偏置:W(0)=[0,0]W(0)=[0,0]W(0)=[0,0],b(0)=1b(0)=1b(0)=1。
步骤1:首次分类
- 对x1x_1x1:y1(W0x1+b0)=1×([0,0]⋅[4,4]T+1)=1>0y_1(W_0x_1 + b_0)=1×([0,0]·[4,4]^T +1)=1>0y1(W0x1+b0)=1×([0,0]⋅[4,4]T+1)=1>0,分类正确。
- 对x2x_2x2:y2(W0x2+b0)=1×([0,0]⋅[4,5]T+1)=1>0y_2(W_0x_2 + b_0)=1×([0,0]·[4,5]^T +1)=1>0y2(W0x2+b0)=1×([0,0]⋅[4,5]T+1)=1>0,分类正确。
- 对x3x_3x3:y3(W0x3+b0)=−1×([0,0]⋅[1,1]T+1)=−1<0y_3(W_0x_3 + b_0)=-1×([0,0]·[1,1]^T +1)=-1<0y3(W0x3+b0)=−1×([0,0]⋅[1,1]T+1)=−1<0,分类错误,需更新参数:
W(1)=W(0)+η⋅y3⋅x3T=[0,0]+1×(−1)×[1,1]T=[−1,−1]W(1)=W(0) + η·y_3·x_3^T = [0,0] + 1×(-1)×[1,1]^T = [-1,-1]W(1)=W(0)+η⋅y3⋅x3T=[0,0]+1×(−1)×[1,1]T=[−1,−1]
b(1)=b(0)+η⋅y3=1+1×(−1)=0b(1)=b(0) + η·y_3 = 1 + 1×(-1) = 0b(1)=b(0)+η⋅y3=1+1×(−1)=0
步骤2:更新后验证
- 对x3x_3x3:y3(W1x3+b1)=−1×([−1,−1]⋅[1,1]T+0)=2>0y_3(W_1x_3 + b_1)=-1×([-1,-1]·[1,1]^T +0)=2>0y3(W1x3+b1)=−1×([−1,−1]⋅[1,1]T+0)=2>0,分类正确。
- 重新验证x1x_1x1:此时W1x1+b1=[−1,−1]⋅[4,4]T+0=−8W_1x_1 + b_1 = [-1,-1]·[4,4]^T +0 = -8W1x1+b1=[−1,−1]⋅[4,4]T+0=−8,y1×(−8)=−8<0y_1×(-8)=-8<0y1×(−8)=−8<0,分类错误,需再次更新参数:
W(2)=W(1)+η⋅y1⋅x1T=[−1,−1]+1×1×[4,4]T=[3,3]W(2)=W(1) + η·y_1·x_1^T = [-1,-1] + 1×1×[4,4]^T = [3,3]W(2)=W(1)+η⋅y1⋅x1T=[−1,−1]+1×1×[4,4]T=[3,3]
b(2)=b(1)+η⋅y1=0+1×1=1b(2)=b(1) + η·y_1 = 0 + 1×1 = 1b(2)=b(1)+η⋅y1=0+1×1=1
步骤3:迭代至收敛
重复上述"验证-更新"过程,直至所有样本分类正确。最终模型为:
f(x)=hardlims(x(1)+x(2)−4)f(x)=\text{hardlims}(x^{(1)} + x^{(2)} -4)f(x)=hardlims(x(1)+x(2)−4)
(hardlims\text{hardlims}hardlims为对称硬极限函数,x(1)、x(2)x^{(1)}、x^{(2)}x(1)、x(2)为输入的两个维度)
04 学习
学习的分类框架
根据训练数据是否含标签,机器学习可分为:监督学习(Supervised Learning) 、无监督学习(Unsupervised Learning) 、半监督学习(Semi-supervised Learning) 、强化学习(Reinforcement Learning)。
一、监督学习
定义
监督学习是机器学习的一种方法,通过构建算法从带标签的训练数据(每个样本为"输入-期望输出"对)中学习,生成推理函数,用于对新样本进行预测或决策,而非遵循固定程序指令。
核心流程
- 数据准备 :从历史数据中随机抽样,划分训练集 (用于构建模型)与验证集(用于评估模型性能)。
- 模型训练:用训练集训练统计模型,通过验证集调整参数。
- 预测应用:将训练好的模型用于新数据,输出预测结果。
任务类型
-
回归(Regression):
- 目标:预测连续型输出值(如房价、股票价格)。
- 示例:通过房屋面积(输入)预测房价(输出),假设函数为线性函数hθ(x)=θ0+θ1xh_\theta(x)=\theta_0+\theta_1xhθ(x)=θ0+θ1x(θ0、θ1\theta_0、\theta_1θ0、θ1为参数)。
- 核心:最小化预测值与真实值的误差(如均方误差J(θ0,θ1)=∑i=1m(hθ(x(i))−y(i))2J(\theta_0,\theta_1)=\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2J(θ0,θ1)=∑i=1m(hθ(x(i))−y(i))2)。
-
分类(Classification):
- 目标:将输出划分为离散类别(如肿瘤良性/恶性、邮件垃圾/非垃圾)。
- 示例:通过肿瘤大小与患者年龄(输入)判断肿瘤类型(输出),常见算法包括逻辑回归、支持向量机(SVM)、感知器等。
关键算法与发展历程
-
核心算法:
- 回归:线性回归、岭回归(Ridge Regression)、LASSO回归。
- 分类:逻辑回归、SVM、感知器、卷积神经网络(CNN)、循环神经网络(RNN/LSTM)、决策树(ID3、C4.5、CART)、集成算法(随机森林、AdaBoost、GBDT、XGBoost)。
- 其他:K近邻(KNN)、朴素贝叶斯分类器、贝叶斯网络。
-
发展时间线:
- 1950s:感知器、线性分类器。
- 1960s:KNN、贝叶斯判别分析。
- 1980s:反向传播(Back Propagation)、决策树(ID3、CART)。
- 1990s:SVM、C4.5、随机森林。
- 2000s后:LSTM、AdaBoost、GBDT、XGBoost。
重要算法详解
1. 逻辑回归(Logistic Regression)
-
本质:线性分类算法,用于二分类任务(如"通过/失败""健康/患病")。
-
核心公式:
- 线性模型:z=θTx+θ0z=\theta^T x + \theta_0z=θTx+θ0(θ\thetaθ为权重向量,θ0\theta_0θ0为偏置)。
- Sigmoid激活函数:将线性输出映射到[0,1]区间(概率值),公式为:
ϕ(z)=11+e−z\phi(z)=\frac{1}{1+e^{-z}}ϕ(z)=1+e−z1 - 最终假设函数:
hθ(x)=11+e−(θTx+θ0)h_\theta(x)=\frac{1}{1+e^{-(\theta^T x + \theta_0)}}hθ(x)=1+e−(θTx+θ0)1 - 分类规则:若hθ(x)≥0.5h_\theta(x)≥0.5hθ(x)≥0.5,预测y=1y=1y=1(正类);若hθ(x)<0.5h_\theta(x)<0.5hθ(x)<0.5,预测y=0y=0y=0(负类)。
-
损失函数与参数优化:
- 损失函数(交叉熵损失):
cost(hθ(x),y)={−log(hθ(x))if y=1−log(1−hθ(x))if y=0cost(h_\theta(x), y)= \begin{cases} -\log(h_\theta(x)) & \text{if } y=1 \\ -\log(1-h_\theta(x)) & \text{if } y=0 \end{cases}cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x))if y=1if y=0 - 代价函数:
J(θ)=1m∑i=1mcost(hθ(x(i)),y(i))J(\theta)=\frac{1}{m}\sum_{i=1}^m cost(h_\theta(x^{(i)}), y^{(i)})J(θ)=m1∑i=1mcost(hθ(x(i)),y(i)) - 参数优化:通过梯度下降法最小化J(θ)J(\theta)J(θ),更新公式为:
θj=θj−α∂∂θjJ(θ)(j=0,1,...,n)\theta_j = \theta_j - \alpha \frac{\partial}{\partial \theta_j}J(\theta) \quad (j=0,1,...,n)θj=θj−α∂θj∂J(θ)(j=0,1,...,n)
(α\alphaα为学习率,控制每次参数更新的步长)
- 损失函数(交叉熵损失):
2. 支持向量机(SVM)
- 核心思想 :在样本空间中找到最大间隔分割超平面,使不同类别的样本被超平面分割,且样本到超平面的间隔最大(间隔由"支持向量"------离超平面最近的样本------决定)。
- 超平面公式 :wTx+b=0w^T x + b = 0wTx+b=0(www为法向量,决定超平面方向;bbb为位移项,决定超平面与原点的距离)。
- 分类规则 :对样本(x(i),y(i))(x^{(i)}, y^{(i)})(x(i),y(i))(y(i)∈{−1,1}y^{(i)}∈\{-1,1\}y(i)∈{−1,1}),若wTx(i)+b>0w^T x^{(i)} + b > 0wTx(i)+b>0,预测y(i)=1y^{(i)}=1y(i)=1;若wTx(i)+b<0w^T x^{(i)} + b < 0wTx(i)+b<0,预测y(i)=−1y^{(i)}=-1y(i)=−1。
- 非线性问题处理 :通过核函数(如RBF核)将非线性可分数据映射到高维空间,使其线性可分,公式为:
f(x)=wTϕ(x)+bf(x)=w^T \phi(x) + bf(x)=wTϕ(x)+b
(ϕ(x)\phi(x)ϕ(x)为映射函数,将输入xxx映射到高维特征空间)
二、无监督学习
定义
无监督学习使用无标签样本进行训练,算法通过挖掘数据自身的内在结构(如聚类、降维)获取知识,无需人工提供"正确答案"。
核心任务与算法
-
聚类(Clustering):
- 目标:将相似样本划分为同一簇,不同样本划分为不同簇。
- 常见算法:K均值聚类(K-means)、DBSCAN、层次聚类(Hierarchical Clustering)、谱聚类(Spectral Clustering)、均值漂移(Mean Shift)。
-
降维(Dimensionality Reduction):
- 目标:在保留数据关键信息的前提下,减少特征维度,简化计算并避免"维度灾难"。
- 常见算法:主成分分析(PCA)、核主成分分析(KPCA)、局部线性嵌入(LLE)、t分布随机邻域嵌入(t-SNE)。
关键算法详解
1. K均值聚类(K-means)
-
核心逻辑 :将nnn个样本划分为kkk个簇,使每个样本属于离其最近的簇中心(通过相似度度量,如欧氏距离、曼哈顿距离),并最小化簇内样本与簇中心的平方误差。
-
平方误差公式 :
E=∑i=1k∑x∈Ci∥x−μi∥2E=\sum_{i=1}^k \sum_{x \in C_i} \|x - \mu_i\|^2E=∑i=1k∑x∈Ci∥x−μi∥2(CiC_iCi为第iii个簇,μi\mu_iμi为CiC_iCi的均值向量,EEE越小,簇内样本相似度越高)
-
算法步骤:
- 随机选择kkk个样本作为初始簇中心μ1,μ2,...,μk\mu_1, \mu_2, ..., \mu_kμ1,μ2,...,μk。
- 计算每个样本到各簇中心的距离,将样本分配至最近的簇。
- 对每个簇,重新计算簇中心(簇内所有样本的均值)。
- 重复步骤2-3,直至迭代次数达到最大值,或前后两次簇中心的差异小于设定阈值。
2. 主成分分析(PCA)
-
核心思想:通过线性变换将高维数据映射到低维空间,使映射后的数据(主成分)保留原数据的最大方差(即"最大可分性"),且各主成分正交。
-
关键性质:
- 最近重构性:样本到低维超平面的距离尽可能小。
- 最大可分性:样本在低维超平面上的投影尽可能分散。
-
算法步骤:
- 数据中心化 :对所有样本进行预处理,消除量纲影响,公式为:
xi←xi−1m∑i=1mxix_i \leftarrow x_i - \frac{1}{m}\sum_{i=1}^m x_ixi←xi−m1∑i=1mxi
(mmm为样本数,1m∑i=1mxi\frac{1}{m}\sum_{i=1}^m x_im1∑i=1mxi为样本均值) - 计算协方差矩阵 :计算中心化后样本的协方差矩阵XXTXX^TXXT(XXX为样本矩阵)。
- 特征值分解:对协方差矩阵进行特征值分解,得到特征值与对应的特征向量。
- 选择主成分 :选取前d′d'd′个最大特征值对应的特征向量w1,w2,...,wd′w_1, w_2, ..., w_{d'}w1,w2,...,wd′(d′d'd′为低维空间维度,通过交叉验证确定)。
- 输出投影矩阵 :投影矩阵W∗=(w1,w2,...,wd′)W^*=(w_1, w_2, ..., w_{d'})W∗=(w1,w2,...,wd′),用于将高维样本映射到低维空间。
- 数据中心化 :对所有样本进行预处理,消除量纲影响,公式为:
监督学习与无监督学习的对比
| 对比维度 | 监督学习 | 无监督学习 |
|---|---|---|
| 样本标签 | 含明确标签(已知正确输出) | 无标签(未知正确输出) |
| 核心目标 | 学习"输入-输出"映射关系,用于预测 | 挖掘数据内在结构(如聚类、降维) |
| 典型任务 | 分类、回归 | 聚类、降维 |
| 示例 | 通过人脸图像(输入)分类年龄(输出) | 对无标签的用户行为数据进行聚类 |