Datawhale X 李宏毅苹果书AI夏令营 | 线性模型——学习笔记

131 阅读1分钟

学习笔记

[ 240831 ] 《深度学习详解》/王棋等/中国工信出版社/新书

〇 通常一个模型的修改,往往来自于对这个问题的理解,即领域知识。(P14)

★ 很久以前学应用时间序列分析课程时,关于对时间序列数据的拟合也是同样的思路,先观察数据的特点,给出一个简单的初步模型,然后再看实际预测效果以此来调整模型,比如增加或减少模型相关参数、使用阶数更高的复杂模型等。

〇 这些模型都是把输入的特征 xx 乘上一个权重,再加上一个偏置就得到预测的结果,这样的模型称为线性模型(linear model).

★ 在《统计机器学习》中没有对线性模型给出正式的定义,但是给出了用于回归任务和分类任务的线性回归模型和线性分类模型。

〇 使用梯度下降更新参数过程(P23)

  1. (随机)选取初始值 θ0\theta_0
  2. 计算梯度 g=L(θ0)g = \nabla L(\theta_0),更新 θ1θ0ηg\theta_1 ← \theta_0 - ηg
  3. 计算梯度 g=L(θ1)g = \nabla L(\theta_1) ,更新 θ2θ1ηg\theta_2 ← \theta_1 - ηg
  4. 计算梯度 g=L(θ2)g = \nabla L(\theta_2) ,更新 θ3θ2ηg\theta_3 ← \theta_2 - ηg

〇 批量(batch),批量大小(batch size),回合(epoch): 把所有的批量都看过一次,称为一个回合(epoch)。

★ 通俗来说,批量就是从整个训练数据集中抽取出来的一小部分数据。具体来说,我们可以把整个训练数据集想象成一箱苹果,而这箱苹果的数量就是训练数据的总数(N)。如果我们每次只从这箱苹果中拿出一小袋(比如10个苹果),这一小袋苹果就相当于一个“批量”,这一带苹果的数量(10个)就是批量大小。我们用这一小袋苹果来计算损失(L1),然后根据这个损失来调整模型的参数。调整完参数后,我们再从箱子里拿出另一小袋苹果,重复这个过程,直到所有的苹果都被用来计算过损失并更新了参数。

激活函数(activation function) (P24) 在机器学习里面,Sigmoid 或 ReLU 称为激活函数(activation function)。 修正线性单元(Rectified Linear Unit,ReLU)的图像有一个水平的线,走到某个地方有一个转折的点,变成一个斜坡,其对应的公式为

cmax(0,b+ωx1)c*max(0, b+\omega x_1)

Sigmoid 函数就是 S 型的函数。因为它长得是有点像是 S 型,所以叫它 Sigmoid 函数。其表达式为

y=c11+e(b+ωx1)y = c*\frac{1}{1+e^{-(b+\omega x_1)}}

Hard Sigmoid 函数的表达式为

y=cσ(b+ωx1)y=c*\sigma (b+\omega x_1)

★ 如上图所示,对于Sigmoid 函数,当 x1x_1 正的非常大的时候,曲线就会收敛在高度为 c 的地方。相反当 x1_ 负的非常大的时候,y的值就会趋近于 0。因此可以通过 Sigmod 函数逼近 Hard Sigmoid 函数。 如上图所示,一个ReLU 函数有一个转折点,而Hard Sigmoid 有两个转折点,因此从图形上看,是可以将两个 ReLU 函数合成一个 Hard Sigmod 函数。如果想要构造的激活函数包含更多的折线,可以使用对应数量的 ReLU 函数进行叠加生成。

〇 深度网络(neural network)

如上图所示,Sigmoid 或 ReLU 称为神经元(neuron),很多的神经元称为神经网络(neural network)。每一排称为一层,称为隐藏层(hidden layer),很多的隐藏层就“深”,这套技术称为深度学习

★ 常见神经网络模型

网络名提出时间网络总层数
AlexNet20128 层
VGG201419 层
GoogleNet201422 层
ResNet2015152 层

〇 机器学习框架

我们有一堆训练数据和测试数据,测试集就是只有 xx 没有 yy

  • 训练数据:{(x1,y1),(x2,y2),,(xN,yN)}\{(x^1, y^1), (x^2, y^2), \cdots, (x^N, y^N)\}
  • 测试数据:{xN+1,xN+2,,xN+M}\{ x^{N+1}, x^{N+2}, \cdots, x^{N+M} \}

训练集就要拿来训练模型,训练的过程包含如下 3 个步骤。

  1. 先写出一个有未知数 θ\theta 的函数fθ(x)f_{\theta}(x)θ\theta 代表一个模型里面所有的未知参数。fθ(x)f_{\theta}(x)的输入特征为 xx
  2. 定义损失,损失是一个函数,其输入就是一组参数,去判断这一组参数的好坏;
  3. 解一个优化的问题,找一个θ\theta,该θ\theta可以让损失的值越小越好。让损失的值最小的θ\thetaθ\theta^{*},即
θ=argθminL\theta^{*} =arg_{\theta} min L

有了θ\theta^{*}以后,就把它拿来用在测试集上,也就是用 θ\theta^{*}来取代fθ(x)f_{\theta}(x)里面θ\theta,输入是测试集,得到输出结果。