admin管理员组

文章数量:1579083

Datawhale X 李宏毅苹果书 AI夏令营Task1

  • 机器学习基础
    • 组成
  • 线性模型
    • 分段线性曲线
    • 模型变形
    • 神经网络(neural network)

机器学习基础

任务:

  1. 回归:求预测
  2. 分类:做选择

组成

step1. 参数+模型+特征+权重+偏执
step2.定义损失函数
eg:MAE(平均绝对误差)MSE(均方误差)cross entropy(交叉熵)
可以使用误差表面图(error surface)来表示
step3. 解最优化问题
最常见的 方法有梯度下降(gradient descent)
优化形象来说就是从山顶找山底,在这个寻找的过程中,引入了两个问题:
1. 梯度大小:梯度(斜率)大小决定寻找步子的大小
2. 学习率(learning rate)大小:学习率大小决定参数更新快慢,影像寻找步子大小。
ps:在机器学习中,需要手动设置参数的被称为超参数
所有的目的:寻找谷底,寻找全局最小值or局部最小值


线性模型

定义:把输入的特征 x x x乘上一个权重 w w w,再加上一个偏置 b b b,这样的模型称为线性模型(linear model)

分段线性曲线

线性模型的问题:过于简单,输入和输出之间可能有更复杂的关系。线性模型中,输入 x x x和输出 y y y之间的关系就是一条直线,成正比或成反比。而某些情况下,输入和输出并不总是成正比或总是成反比,简单的线性模型就无法模拟真实情况。
分段线性曲线(piecewise linear curve) = 常数项 + 线性折线

分段曲线可以逼近任何连续曲线(类比微分法)

sigmoid函数: y = c 1 1 + e − ( b + w x 1 ) y=c\frac1{1+e^{-(b+wx_1)}} y=c1+e(b+wx1)1
Hard_sigmoid函数: h a r d s i g m o i d ( x ) = { 0 x < a w x + b a < = x < = b c x > 2.5 hard_sigmoid(x)=\left\{\begin{array}{ll}0&x<a\\wx+b&a<=x<=b\\c&x>2.5\end{array}\right. hardsigmoid(x)= 0wx+bcx<aa<=x<=bx>2.5
使用sigmoid函数可以逼近hard_sigmoid函数

sigmoid不同的参数可以制造不同的sigmoid函数.
此外,我们可以不止用一个特征,而是用多个特征带入不同的参数中,组合不同的,更有灵活性的函数
eg:
r 1 = b 1 + w 11 x 1 + w 12 x 2 + w 13 x 3 r 2 = b 2 + w 21 x 1 + w 22 x 2 + w 23 x 3 r 3 = b 3 + w 31 x 1 + w 32 x 2 + w 33 x 3 r_{1}=b_1+w_{11}x_1+w_{12}x_2+w_{13}x_3\\r_{2}=b_2+w_{21}x_1+w_{22}x_2+w_{23}x_3\\r_{3}=b_3+w_{31}x_1+w_{32}x_2+w_{33}x_3 r1=b1+w11x1+w12x2+w13x3r2=b2+w21x1+w22x2+w23x3r3=b3+w31x1+w32x2+w33x3
上式中, w i j w_{ij} wij代表在第 i i i个sigmoid里面乘以第 j j j个特征的权重, i i i就是现在考虑的是第 i i i个Sigmoid函数
用矩阵跟向量相乘的方法(矩阵可以使用GPU运算,更加快速),上式可以改为:
[ r 1 r 2 r 3 ] = [ b 1 b 2 b 3 ] + [ w 11 w 12 w 13 w 21 w 22 w 23 w 31 w 32 w 33 ] [ x 1 x 2 x 3 ] \left[\begin{array}{c}r_1\\r_2\\r_3\end{array}\right]=\left[\begin{array}{c}b_1\\b_2\\b_3\end{array}\right]+\left[\begin{array}{ccc}w_{11}&w_{12}&w_{13}\\w_{21}&w_{22}&w_{23}\\w_{31}&w_{32}&w_{33}\end{array}\right]\left[\begin{array}{c}x_1\\x_2\\x_3\end{array}\right] r1r2r3 = b1b2b3 + w11w21w31w12w22w32w13w23w33 x1x2x3
改为线性函数来表示:
r = b + W x r=b+Wx r=b+Wx

下一步要定义损失,使用 θ \theta θ来统一所有的未知参数,损失函数就变成了 L ( θ ) L(\theta) L(θ)。先给定 θ \theta θ所有的值,再带入特征 x x x,得到预测的 y y y,计算和真实标签Group Truth之间的误差。再将所有的误差相加得到损失。

  1. 初始化一个 θ 0 \theta_0 θ0
  2. 计算 θ \theta θ L L L的微分(计算梯度位置) g = ∇ L ( θ 0 ) \boldsymbol{g}=\nabla L\left(\boldsymbol{\theta}_0\right) g=L(θ0),即

g = [ ∂ L ∂ θ 1 ∣ θ = θ 0 ∂ L ∂ θ 2 ∣ θ = θ 0 ⋮ ] g=\left[\begin{array}{c}\frac{\partial L}{\partial\theta_1}\bigg|_{\boldsymbol{\theta}=\boldsymbol{\theta}_0}\\\frac{\partial L}{\partial\theta_2}\bigg|_{\boldsymbol{\theta}=\boldsymbol{\theta}_0}\\\vdots\end{array}\right] g= θ1L θ=θ0θ2L θ=θ0
Point:实际使用梯度下降时,会把N个数据随机分成一组一组的批量(batch),原先整个做一次梯度下降,现在一个batch里面拿出来计算一个损失,比起整体数据梯度下降可以进行多次更新。把所有的批量都计算一遍叫一个回合(epoch),每一次更新参数叫做一次更新。
eg:1000个数据,N= 1000,batch size 设为10,即B=10。1000个**样本(example)**形成1000(N)/10(B)=100个批量,一个回合离更新了100次

模型变形

Hard Sigmoid可以看做两个修正线性单元(Rectified Linear Unit,ReLu)的综合。
Sigmoid或ReLUctant被称为
激活函数
,提供非线性模块

神经网络(neural network)

input →神经网络(输入层→隐藏层→输出层)→output

本文标签: 夏令营苹果李宏毅DatawhaleAI