跟李沐学AI:实用机器学习 | 第三章

3.1 8分钟机器学习介绍

机器学习算法分类

  • 监督学习:使用标注好的数据预测标号。自监督学习:标号从数据中产生得来,例如BERT、word2vec
  • 半监督学习:使用标注和未标注的数据训练,学习能够预测未标注数据的标号的模型,例如自训练
  • 无监督学习:使用未标注的数据训练,例如聚类、密度估计(GAN)
  • 强化学习:使用跟环境交互得到的数据不断调整,实现最大化,例如机器人

监督学习

  • 模型:从输入获得预测的输出
  • 损失函数:衡量真实标号和预测值之间的差异
  • 目标函数Objective:任何在训练过程中用于优化的函数
  • 优化函数Optimization:通过最小化损失学习模型参数

监督模型分类

  • 决策树:使用树做决策
  • 线性模型:使用输入的线性组合做决策
  • 核方法:使用核函数计算特征相似度
  • 神经网络:使用神经网络学习特征表示

3.2 决策树

优点:可解释、能够处理数值和类别特征(集成学习)

缺点:不稳定、复杂的树可能导致过拟合(剪枝)、不容易并行

随机森林(解决不稳定问题)

  • 训练多个决策树改善稳定性(并行):每棵树独立训练,对于分类任务使用投票,对于回归问题使用均值
  • “随机”来自于:①Bagging:可放回地对训练样本进行随机采样 ②不放回地对训练集的特征进行随机采样

Gradient Boosting Decision Trees

  • 在残差数据上按顺序训练多棵树 求和

  • 残差数据:yi是第i个样本的标号,Ft(xi)是当前训练好了的树对第i个样本标号的预测值,把标号改为这两者之间的差。相当于ft预测的是真实值和预测值之间的差。
  • 残差就相当于梯度下降,所以叫做Gradient Boosting Decision Tree

3.3 线性模型

线性回归预测

给定数据x=[x1, x2, …, xp],

y=w1x1+w2x2+…+wpxp+b=<w, x>+b

y_hat = (x*w).sum( )+b

  • 目标函数:最小化均方误差

线性回归分类

  • 输出是一个向量oi=<x, wi>+bi,第i个值表示它数据第i类的置信分数。标号y=[y1, y2, …, ym],当y=i时yi=1,否则为0
  • 最小化均方误差

  • 预测标号

                精力分散到所有类别中 不好

softmax回归

  • 把分数变成概率(非负,和为1)

  • 交叉熵损失函数

                让模型专注到在正确类别上的概率有多高

3.4 随机梯度下降

小批量随机梯度下降(Mini-batch Stochastic gradient descent(SGD))

小批量随机梯度下降几乎是整个深度学习唯一的求解方法,可以求解除了决策树外几乎所有的算法模型

w 模型参数       b batch size      nt 在时刻t的学习率

随机初始化w1

重复t=1, 2, …  直到收敛

优点:可以求解除了决策树外其他算法模型

缺点:对超参数b和nt敏感

yield可以反复地调用,然后一个一个地返回

w初始化时不能全部为0

@矩阵乘法   里面的 l 指的是loss   param-=learning_rate*param.grad

3.5 多层感知机

神经网络

手动抽取特征->神经网络学习特征

神经网络需要更多的数据和计算

用于对数据结构进行建模的神经网络架构

  • 多层感知机 Multiplayer perceptor, MLP
  • 卷积神经网络 Convolutional  neural network, CNN
  • 循环神经网络 Recurrent neural network, RNN
  • 变形金刚Transformers:既能处理时序信息,又能处理空间信息

线性方法 -> 多层感知机

单层感知机

稠密(全连接or线性)层参数W∈R(m*n),b∈R(m), 输出y=Wx+b∈R(m) 相当于m是样本数,n是特征数

  • 线性回归:1个输出的全连接层
  • softmax回归:m个输出的全连接层+softmax

多层感知机

  • 激活函数:非线性函数,形成非线性模型

  • 堆叠多个隐藏层得到更深的模型(dense+activation)

 

left:有一层隐藏层的MLP(橙色标注的dense就是隐藏层)  right:有三层隐藏层的MLP

超参数:隐藏层层数、每个隐藏层的输出尺寸

 

3.6 卷积神经网络

全连接层 -> 卷积层

全连接层要学习的参数太多了

把先验信息嵌入模型架构中(translation invariance平移不变性, locality本地性 像素和邻居相关),从而实现使用更少的参数能够得到同样的模型容量

卷积层 Convolution layer

  • Locality:使用k*k的输入窗口计算输出,对结果进行求和作为输出
  • Translation invariant:输出使用相同的k*k权重(权重共享)
  • k*k的窗口被称为卷积核,学习识别模式

(cross-correlation 交叉相关)这里的*是对位乘

相当于步长为1,所以shape(Y)=[X.shape[0]-h+1, X.shape[1]-w+1]

池化层(汇聚层)Pooling layer

  • 卷积层对位置很敏感,输入的一个像素的偏移会导致输出中像素的偏移
  • 池化层计算k*k窗口中的均值/最大值作为输出(平均汇聚/最大汇聚)

 

(此处代码应该写错了,应该是Y[i, j]=(X[i:i+h, j:j+w]*K).max()mean()

          

现代CNNs是用了不同的超参和连接层的深度神经网络:AlexNet, VGG, Inceptions, ResNet, MobileNet

3.7 循环神经网络

全连接层 -> 循环网络

语言模型:用于预测下个词

使用基本的MLP不能很好地处理序列信息

循环神经网络

 

考虑历史信息

 

带有门的RNNLSTM, GRU:对信息流做了一些很细致的控制

  • 忘掉输入:在计算ht的时候抑制xt,通过参数学习应该关注哪些xt、不关注哪些xt(比如句子中的符号)
  • 忘掉过去:在计算ht的时候抑制ht-1(比如新一句/新一段开始了)

 输入X是一个三维数据,num_steps是时间偏移

Bi-RNN Deep RNN

双向RNN:综合考虑上一个时刻和下一个时刻的信息输出yt

 

Deep RNN:堆叠多个RNN层,其中的RNN层可以是双向的

 

总结

根据不同的数据选择不同的算法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值