Friday, March 6th 2020, 4:36 pm

  2.2k 字     9 分钟       

第二周总结,没有实战。

二、机器学习基础

mm

1 引言

认知处理

核心:通过媒体形式的转换实现媒体内容的认知

机器学习基本任务

机器学习

根据训练样本对系统输入输出之间依赖关系进行 建模,以便在测试阶段对输入做出预测

分类

e. g. 输入样本下x,输出y是类别标号,两类情况下y={1,-1}

回归

e. g.输出y是连续变量,是输入x的函数

机器学习方法

监督/非监督学习

  • Supervised Learning 分类 回归
  • Unsupervised Learning 概率密度估计、聚类、降维

其他学习方法

  • 增强学习 Reinforcement Learning
  • 多任务学习 Multi-task Learning

机器学习发展历史

  • 1936 LDA
  • 1950s 贝叶斯分类
  • 1956 感知机
  • 1967 kNN
  • 1986 BP
  • 1989 CNN
  • 1991 SVM
  • 1996 AdaBoost
  • 1997 LSTM
  • 2006 Deep Learning

模式识别

基本概念

模式

抽象分类概念 模式集合Ω={ωi},i=1,2,...,C\Omega=\{\omega_i\},i=1,2,...,C

样本

样本观测数据 x=(x1,x2,...,xm)T\vec x=(x_1,x2,...,x_m)^T

模式分类/模式识别

y=g(x)=ωiy=g(\vec x)=\omega _i

特征

特征

区别的关键

特征提取

对输入的样本观测数据进行处理或变换,有利于分类的特征向量

z=(z1,z2,...,zd)T=f(x)\vec z=(z_1,z_2,...,z_d)^T=f(\vec x)

模式识别系统

  1. 数据获取:信号空间
  2. 预处理
  3. 特征提取与变换:特征空间
  4. 分类决策:模式空间
应用
  • 网络海量信息检索与处理
  • 生物特征身份认证
  • 视频监控

基本问题:模式类的紧致性

紧致的同类模式样本集合
  • 临界点的数量与总的点数相比很少

  • 集合内的任意两点的连线,在线上的点属于同一类别

  • 每一个点有足够大的邻域,在邻域内只包含同一类别的点

    bad cases:

  • 没有临界点

  • 有较多临界点

  • 临界点过多

生成式模式vs鉴别式模式

生成式模式 Generative models:
  • 对特征向量和类别的(联合)概率分布建模:p(x,w)p(x,\bold w)

  • 利用Bayes’ theorem

    p(ωx)=p(xω)p(ω)p(x)\displaystyle p(\omega |x)=\frac{p(x|\omega)p(\omega)}{p(x)}

  • 典型方法

    • 最小距离分类器:计算样本到各类别中心的距离, 选择距离最小的类别作为输出
鉴别式模式 Discriminative
  • 直接用函数(而非概率)对分类界面进行建模
  • 典型方法:如神经网络

2 线性回归方法

基本要素

输入 x=[x1,x2,...,xn]T\bold x=[x_1,x_2,...,x_n]^T

线性方法有n个权重系数和偏置量 w=[w1,w2,...,w3]T,b\bold w=[w_1,w_2,...,w_3]^T,b

输出是输入的加权总和 y=w1x1+w2x2+...+wnxn+by=w_1x_1+w_2x_2+...+w_nx_n+b

矢量化

y=ω,x+by=\langle\bold\omega , \bold x\rangle+b

y=ωx+by=\bold \omega\cdot \bold x +b

y=ωTx+by=\bold \omega^T\bold x+b

线性方法是一个单层的网络 input layer->output layer

训练数据集

X=[x0,x1,...,xn]T,y=[y0,y1,...,yn]T\bold X=[\bold{x_0,x_1,...,x_n}]^T ,\bold y=[\bold{y_0,y_1,...,y_n}]^T

学习参数⬇

定义损失函数

  • 最小二乘法

求解

增广向量

\displaystyle \ell(\bold{X,y,w})=\frac{1}{n}\Arrowvert y-Xw\Arrowvert ^2

w=2n(yXw)TX\displaystyle\frac{\partial\ell}{\partial w}=\frac{2}{n}(y-Xw)^TX

闭式解

=0

w=(xTx)1Xyw^*=(x^Tx)^{-1}Xy

优化方法求解:误差反向传播
  • 选择一个起点w0w_0

  • 梯度下降法调整参数,多次迭代

    wt=wt1ηwt1\displaystyle w_t=w_{t-1}-\eta \frac{\partial\ell}{\partial w_{t-1}}

梯度

更新权重的方向

学习率

一个超参数指定更新参数的强度

梯度下降法调整参数

学习获取使损失最小化的 参数= θ\theta^*

θ={wi,bj}\theta=\{w_i,b_j\}

  • 初始化参数
  • 计算梯度
  • 重复 直至梯度值更新非常小

一些影响

选取学习率

a

选取样本批量大小 batchsize

利用所有样本计算梯度BGD
随机选取单个样本计算梯度SGD
随机选取mini-batch样本计算梯度 mini-batch SGD

3 感知机Perceptron

Basic Conception

feature

  • 神经网络与支持向量机的基础
  • 输出-1 +1
  • 分类超平面 鉴别式模式
  • 基于误分类点利用梯度下降法进行极小化

激活函数

类型
  1. 阈值函数
  2. 分段线性幻术
  3. sigmoid函数
  4. 双曲正切函数
  5. ReLU
  6. LeakyReLU
  7. PReLU
  8. Softmax
    • 适用于分类任务
干啥的

?

感知机定义

f(x)=sign(wx+b)f(x)=sign(w\cdot x+b)

  • ω\omega
  • bb
  • sign(x)sign(x)

感知机几何解释

分类界面对应于线性方程ωx+b=0\omega\cdot x+b=0

实现:

感知机学习策略

误分类点距离
损失函数

​ 误分类点到超平面的总距离

感知机学习算法

优化问题:

minw,bL(ω,b)=xMyi(wxi+b),M\displaystyle \min_{w,b}L(\omega,b)=-\sum_{x\in M}y_i(w\cdot x_i+b),M是误分类点集合

更新:

L(w,b)w=yixiww+ηyixiL(w,b)b=yibb+ηyi\frac{\partial L(w,b)}{\partial w}=-y_i x_i\\ w\leftarrow w+\eta y_i x_i\\ \frac{\partial L(w,b)}{\partial b}=-y_i \\ b\leftarrow b+\eta y_i ​

更新 迭代次数?

XOR问题

  • 属于线性不可分
  • 单个感知不能解决异或问题

感知机小结

当训练数据集线性可分时,感知机学习算法是收敛的。 对于线性不可分数据集,迭代过程振荡。

感知机算法存在许多解,既依赖于初值,也依赖迭代过程中误分类点的选择顺序。

为得到唯一分离超平面,需要增加约束,如后续课程 中介绍的支持向量机。

多层感知机具有更好的模型描述能力。

4 多层感知机与Softmax回归

多分类任务

预测类别

argmaxi(o1,o2,..)\displaystyle \arg \max_i (o_1,o_2,..)

单值输出 $o_1\rightarrow 输出每个类别置信度o_1,o_2,…$

max 函数不可求导\rightarrow需要定义一个可求导的目标函数

利用神经元实现回归

神经元模型

y=f(wx+b)y=f(wx+b)

线性回归

g(x)=wx+bg(x)=wx+b

逻辑回归

z=wx+bz=wx+b

y=f(z)=11+ez\displaystyle y=f(z)=\frac{1}{1+e^{-z}}

多层感知机

实现

在输入输出层之间加入一层或者多层隐单元,构成多层前馈神经网络

训练

相当于复杂的复合函数

采用误差反向传播方法,采用梯度下降法调整模型参数

  • 复合函数梯度求导采用链式法则

解决异或问题

加一层隐单元,模式空间分两类

用于多类的分类任务

​ 输出层节点数 = 模式分类问题的类别总数

Softmax回归

含义

输出层节点激活函数 采用Softmax函数,适用于多分类任务

softmax(x)i=qi=exp(xi)j=1nexp(xj)\mathrm{softmax}(x)_i=q_i=\frac{\exp(x_i)}{\sum_{j=1}^{n}\exp(x_j)}

  • 用exp获得大于0的值
  • 除以总和以获得概率分布

实现

import numpy as np 
def softmax(x): 
    """Compute the softmax of vector x."""
    exps = np.exp(x) 
    return exps / np.sum(exps) 
softmax([1,2,3])
>>>array([0.09003057, 0.24472847, 0.66524096]

计算中的问题

softmax([1000,2000,3000])

Numpy浮点数数值范围有限

改进:

softmax(x)i=qi=exp(xi+D)j=1nexp(xj+D)\mathrm{softmax}(x)_i=q_i=\frac{\exp(x_i+D)}{\sum_{j=1}^{n}\exp(x_j+D)}

导数

推导略去,非常简单。

qixj=qi(δijqj)\frac{\partial q_i}{\partial x_j}=q_i(\delta_{ij}-q_j)

目标函数: 交叉熵

交叉熵

定义

略去,不想写了

线性回归与softmax对比

a

5 模型评估

错误率

识别率

误差

  • 训练误差/经验误差
  • 测试误差/泛化误差

模型的泛化能力

  • 容量(复杂度)
  • 偏差 high–欠拟合
  • 方差 high–过拟合

多因素决定


略去 我裂开



媒体与认知      大二下 媒体与认知

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

 TOC