实用机器学习笔记-第三章-机器学习模型分类与介绍

一、 机器学习模型

本章节内容:介绍机器学习的模型分类、常用分类的模型的代表

1. 入门介绍

1.1 机器学习算法分类

  • 可监督学习:在有标号数据上训练模型,去预测标号
  • 自监督学习:标号由数据中生成出来的(word2Vec,BERT)
  • 半监督学习:有标注的数据和大量的没有标注的数据
    • 任务1:像监督学习一样,预测我的标注
    • 任务2:去预测没有标注的数据
  • 无监督学习:在无标注的数据上训练(聚类clustering,分布估计density estimation如GAN)
  • 强化学习:模型与环境交互,对环境做一些交互,用一些观察点得到环境给我的反馈来最大化我的reward,eg:机器人走路

本课程更多的讨论的是监督学习无监督学习

1.2 监督学习的组成部分

1.2.1 模型:根据输入进行输出一个标号,是核心部分
1.2.2 损失函数:衡量模型预测值和真实值的差距,eg:平方损失
1.2.3 目标函数:在训练过程中需要优化的函数,eg:最小化损失函数
1.2.4 优化: 把模型中可以学习的参数(没有指定值的参数)填上值,使得能够解决目标函数(或者最小化损失函数)

1.3 监督学习的模型分类

1.3.1 决策树:树来做决定
1.3.2 线性模型:输出是输入的线性组合
1.3.3 核方法(机器):用核函数来衡量两个样本的相似度
1.3.4 神经网络:用多层神经网络,学习一个特征表示

1.4 总结

请添加图片描述

2. 决策树模型

2.1作用

2.1.1 用于分类

请添加图片描述

2.1.2 用于回归

请添加图片描述

2.2 好处与坏处

2.2.1 好处
  • 可解释的
  • 可以处理数字和类别类的特征
2.2.2 坏处
  • 不鲁棒(不稳定),可以使用集成学习来辅助
  • 复杂的树导致过拟合,可以剪枝
  • 不利于并行计算

2.3 提升树模型的办法-Bagging(随机森林)

一棵树不稳定,就用多棵树来做训练,提高鲁棒性

2.3.1 特点
  • 随机并行训练
  • 采用投票(分类问题)或者取平均值(回归问题)
2.3.2 随机性的意义
  • Bagging:在训练集中随机采样一些样本,带替换的采样
    • 中文理解:均匀、有放回的采样
  • 从样本中随机采样一些特征,不用全部特征

2.4 提升树模型的办法2-Boosting(基于梯度的Boosting)

2.4.1 特点
  • 在残差数据上顺序的训练多棵树
  • t代表时间, F t ( x ) F_t(x) Ft(x)代表过去时间内t-1棵树输出的和,然后在残差数据上训练一个新的树 f t f_t ft F t + 1 ( x ) F_t+_1(x) Ft+1(x) = F t ( x ) F_t(x) Ft(x)+ f t ( x ) f_t(x) ft(x)
    • 残差数据residuals {( x i , y i − F t ( x i ) x_i,y_i-F_t(x_i) xi,yiFt(xi))} i = 1 , . . . _i=_1,... i=1,...
  • 如果损失函数采用均方误差,则 − ∂ L ∂ F - \frac{\partial L}{\partial F} FL = {( x i , y i − F t ( x i ) x_i,y_i-F_t(x_i) xi,yiFt(xi))} i = 1 , . . . _i=_1,... i=1,...,因此叫做梯度Boostring

3. 线性模型

3.1 线性回归
  • 给定数据x = [ x 1 x_1 x1, x 2 x_2 x2,… x p x_p xp],线性模型预测我的y = $w_1x_1+w_2x_2+…+w_px_p+b $= <w,x>+b

  • 可学习的参数:w,b;权重w = [ w 1 w_1 w1, w 2 w_2 w2,…, w p w_p wp] 偏移 b是标量 <a,b>是点乘

  • 目标函数:优化均方误差MSE

  • 收集n次训练的样本数据 X = [ x 1 , x 2 , . . . , x n ] T ∈ R n ∗ p X = [x_1,x_2,...,x_n]^T\in\mathbb{R}^{n*p} X=[x1,x2,...,xn]TRnp

  • w ∗ , b ∗ = a r g m i n w , b ( X , y , w , b ) w^*,b^* = \mathop{argmin}\limits_{w,b}(X,y,w,b) w,b=w,bargmin(X,y,w,b) = a r g m i n w , b 1 n ∑ i = 1 n ∥ y i − < x i , w > − b ∥ 2 \mathop{argmin}\limits_{w,b}\frac{1}{n}\sum\limits_{i=1}^n\parallel y_i - <x_i,w> - b\parallel ^2 w,bargminn1i=1nyi<xi,w>b2

3.2 线性分类
  • 多分类问题,输出是一个向量(回归问题输出一个实数值),每个向量的第i个值表示当前物体是这个类别的置信度
  • 置信度计算: o i = < x , w i > + b i o_i = <x,w_i> + b_i oi=<x,wi>+bi
  • 输出标号 y = [ y 1 , y 2 , . . . , y m ] y = [y_1,y_2,...,y_m] y=[y1,y2,...,ym]使用独热编码,当 y i = 1 y_i=1 yi=1代表着就是预测的结果,其余的都是0
  • 优化均方误差: 1 m ∥ o − y ∥ 2 2 \frac{1}{m}\parallel o - y \parallel _2^2 m1oy22,预测 a r g m a x i { o i } i = 1 m \mathop{argmax_i}\{o_i\}_{i=1}^m argmaxi{oi}i=1m最大置信度标记为 y i = 1 {y_i=1} yi=1
3.3 Softmax回归(用于解决多分类问题)
  • 线性回归存在的问题是,过于关注预测不正确的样本,其实只需要关注置信度高的样本
  • 解决办法:把置信度(实数值)换成概率。 y ^ = s o f t m a x ( o ) \hat{y} = \mathop{softmax(o)} y^=softmax(o),其中 y ^ i = e x p ( o i ) ∑ k = 1 m e x p ( o k ) \hat{y}_i = \frac{\mathop{exp(o_i)}}{\sum_{k=1}^m\mathop{exp(o_k)}} y^i=k=1mexp(ok)exp(oi)
  • 选择最大的 y ^ i \hat{y}_i y^i作为我的预测结果
  • 通过交叉熵来比较两个分布的差异,令其最小化。

4. 小批量随机梯度下降SGD

4.1 SGD算法介绍
  • 模型参数w(把之前的偏移b包含在其中),批量大小b,学习率 η t \eta_t ηt,时刻t
  • 随机的初始化一个 w 1 w_1 w1
  • 重复t=1,2,…直到模型收敛为止
    • 步骤1:在n个样本中随机采样 I t ⊂ { 1 , . . . , n } I_t\subset\{1,...,n\} It{1,...,n}, I t I_t It的大小就是批量大小b
    • 步骤2:更新 w t + 1 = w t − η t ∂ w t L ( X I t , y I t , w t ) w_{t+1} = w_t - \eta_t\partial_{w_t}L(X_{I_t},y_{I_t},w_t) wt+1=wtηtwtL(XIt,yIt,wt)
    • 什么是收敛:目标函数在每个样本上的损失不再下降或者说其他一些指标趋向平衡
4.2 好处和坏处
  • 好处:可以解决除了决策树以外的所有问题
  • 坏处:选取超参数b和 η t \eta_t ηt比较靠经验

5. 多层感知机 MLP

5.1 全连接层dense layer
  • 有可以学习的参数 W ∈ R m ∗ n , b ∈ R m W \in \mathbb{R}^{m*n},b \in \mathbb{R}^m WRmn,bRm,输出结果 y = W x + b ∈ R m y = Wx + b \in \mathbb{R}^m y=Wx+bRm

  • 线性回归可以看作是只有1个输出的全连接层,softmax回归看作有m个输出和softmax操作子(得到概率)的全连接层

5.1.1 流程图

请添加图片描述

5.2 MLP
  • 激活函数将线性模型变为非线性,作用于输入向量的每一个元素
  • 可以把多个隐藏层(全连接层+激活层)进行叠加,得到深层的MLP
5.2.1 激活函数
  • sigmoid函数: 1 1 + e x p ( − x ) \frac{1}{1+\mathop{exp(-x)}} 1+exp(x)1
  • ReLU函数: m a x ( x , 0 ) \mathop{max(x,0)} max(x,0)
5.2.2 超参数
  • 隐藏层个数
  • 每个隐藏层的输出

6. 卷积神经网络 CNN(用于图片分类)

#### 6.1 从MLP到CNN
6.1.1 MLP的问题
  • 当进行图像识别的时候,可以学习的参数太多,成本高
  • 图像是全连接的,也就是输出是由所有的输入权重和得到的
6.1.2 图像识别的原则
  • 平移不变性:无论物体在哪里,都能得到相同的输出
  • 局部性:像素和周围的像素相关性比较高
6.2 卷积层
  • 局部性:输出是由一个kxk大小的输入窗口所计算出来的
  • 平移不变性:我同样大小的kxk窗口,换一个位置,他的权重和之前的权重是一样的(权重共享)
  • 卷积核(窗口)通常用于识别一种模式
6.2.1 可学习参数
  • 全连接层:输入大小、输出大小
  • 卷积层:窗口大小k
6.3 池化层(汇聚层)
  • 卷积层对输入位置很敏感:输入中一个像素的位移会导致输出中一个像素的位移。
  • 池化层输入就是卷积层的输出
  • 池化层的操作:计算KxK窗口中的均值(平均汇聚)/最大值(最大汇聚)
6.4 CNN卷积神经网络
  • CNN使用多个卷积层来进行特征抽取
    • 激活层用于每一个卷积层之后
    • 池化层用于减少位置敏感性
  • 现在的CNN使用不同的超参数和层连接(AlexNet、VGG、Inceptions、ResNet、MobileNet)

请添加图片描述

7. 循环神经网络 RNN(用于NLP)

7.1 从MLP到RNN
  • 给一个词,预测句子的下一个词
    • Hello -> world, hello world -> !
  • 使用MLP不能表示语句的时序信息
7.2 RNN流程图

请添加图片描述

  • 隐藏状态H包含了过去时间的所有信息
7.3 RNN与带有门限的RNN
7.3.1 简单RNN
  • 公式 y t = h t = ϕ ( W h h h t − 1 + W h x x y + b h y_t = h_t = \phi(W_{hh}h_{t-1} + W_{hx}x_y + b_h yt=ht=ϕ(Whhht1+Whxxy+bh

请添加图片描述

7.3.2 带门限的RNN(LSTM,GRU),对信息流进行更细致的控制
  • 抑制输入:计算 h t h_t ht的时候需要抑制 x t x_t xt,遇到介词,符号等
  • 抑制过去:计算 h t h_t ht的时候需要抑制 h t − 1 h_{t-1} ht1,遇到新的句子开始
7.4 双向RNN和深层RNN
7.4.1 双向RNN
  • 输出包含来自正向的信息和来自反向的信息
    请添加图片描述
7.4.2 深度RNN(多层)

请添加图片描述

  • 这里的RNN可以是简单RNN、LSTM、GRU、双向RNN
7.5 模型的选择

请添加图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值