人工智能导论复习整理(五)

关于训练

参数和超参数

回顾有监督学习:

给定训练数据 { ( x i , y i ) , i = 1 , ⋯   , n } i . i . d . \{(x_i,y_i),i=1,\cdots,n\}\quad \mathrm{i.i.d.} { (xi,yi),i=1,,n}i.i.d.来自同一分布 D D D

找到 y = f ( x ) ∈ H y=f(x)\in \mathscr{H} y=f(x)H

s . t . f \mathrm{s.t.}\quad f s.t.f能在测试集( i . i . d . \mathrm{i.i.d.} i.i.d.来自同一分布 D D D)上表现良好

需要通过损失函数(loss function):
L ( f ) = E ( x , y ) ∼ D [ l ( f , x , y ) ] L(f)=\mathbb{E}_{(x,y)\sim D}[l(f,x,y)] L(f)=E(x,y)D[l(f,x,y)]
来衡量模型的数据处理能力。即衡量 f f f是否在测试集上表现良好。这就需要找到一个 y = f ( x ) ∈ H y=f(x)\in \mathscr{H} y=f(x)H,最小化loss值:
L ^ ( f ) = 1 n ∑ i = 1 n l ( f , x i , y i ) \hat{L}(f)=\dfrac1n\sum_{i=1}^nl(f,x_i,y_i) L^(f)=n1i=1nl(f,xi,yi)
训练完成后得到的loss值并不一定尽如人意:

  1. 有可能 f f f在训练集上表现良好,但在测试集上表现较差。
  2. 甚至 f f f在训练集上表现也较差。

对于第一种情况,可能是模型过拟合了,需要调整参数,或者进行正则化;第二种情况则可能是欠拟合,此时可能不仅需要调参,甚至需要重新设计网络。

如果出现欠拟合的问题,可能遇到的问题是large bias,即偏差较大。可能是参数没有训练好,也有可能是模型本身不够强。此时的解决方案为:

  1. 在输入中增加更多的特征(比如区分男女性,可以不仅仅靠身高的高矮来判断,还可以同时考虑头发长度、穿衣打扮等)
  2. 使用更复杂的、表达能力更强的模型

如果出现过拟合的问题,可能遇到的问题是large variance,即方差较大。此时泛化能力弱,模型可能学出了训练集上的噪声。此时的解决方案:

  1. 增加训练集的数据量。(这个方法虽然很有效,但并不总是实用。比如有些病灶图像,由于疾病罕见,能获得的图像本就很少,因此难以通过收集增加数据量,此时可以考虑图像增强,人为增加数据量。)
  2. 正则化,但可能增加bias的误差。

当模型简单的时候,bias会比较大,而variance较小;反之模型复杂的时候,bias会比较小,而variance较大。

参数和超参数

(Model Design + Hyperparameters) -> Model Parameters

模型设计包括:层数、激活函数、优化等

超参数包括:学习率、Dropout等

参数包括:权重、偏置等

实际训练过程中:选择超参数;训练模型;评估性能;改进超参数,构成了一个循环,直到模型能满足要求,循环结束。

设置数据

将所有的数据都作为训练集来训练模型,这种做法是欠妥的,因为这样得到的模型势必会出现过拟合的问题。如果将一部分数据作为测试集,剩下的数据作为训练集,这种做法依然会出现模型过拟合的问题。

更好的做法是,将数据分成训练集、评估(validation)集和测试集三部分。平估集用来确定超参数。常用的划分比例为 6 : 2 : 2 6:2:2 6:2:2或者 7 : 2 : 1 7:2:1 7:2:1

对于上述方法,如果数据集本身较小,那么 60 % 60\% 60%的数据也不够用于模型训练,此时考虑第四种方法,即交叉检验(Cross-Validation):将训练数据集分成若干个folds,每次选取一个fold作为评估集,来选取超参数,剩下的作为训练集。如下图所示:

在这里插入图片描述

最后,将得到的结果平均起来就是最终的模型。这种方法尤其适合小数据集。

梯度下降法

当我们为一个具体的问题设计了一个模型以及评估策略后,所有的机器学习问题都可以形式化为一个最优化问题。优化问题中只有少部分问题可以得到解析解(如通过最小二乘法得到一个真实的解),很大一部分问题只能通过迭代的方式求解,其中最常用的就是梯度下降法和牛顿法。神经网络优化算法,大体都是使用了梯度下降法的框架。

梯度的概念建立在偏导数与方向导数之上。方向导数反映了函数沿某一个方向上的变化率,而梯度就是函数变化最快的那个方向。

以二维平面为例,假设有一函数 f ( x ) f(x) f(x),如果它的导数 f ′ ( x ) > 0 f'(x)>0 f(x)>0,那么 f ( x ) f(x) f(x)单调递增,即减小 x x x的值就能减小 f ( x ) f(x) f(x)的值,反之亦然。所以,将 x x x向导数相反的方向移动,就能减小 f ( x ) f(x) f(x)。这就是梯度下降

在机器学习中,我们的目标是优化参数,也就是找到使得loss function取值最小的那些参数值。要找到这样的值可以通过迭代的方式实现。

以一个参数 w w w为例,要求 w ∗ = a r g min ⁡ w L ( w ) w^*=arg\min \limits_{w} L(w) w=argwminL(w)。首先要随机给定一个初始值 w 0 w^0 w0,一般取在 ( 0 , 1 ) (0,1) (0,1)之间。然后计算 d L d w ∣ w = w 0 \dfrac{\mathbb{d}L}{\mathbb{d}w}|_{w=w^0} dwdLw=w0,随后就能得到 w 1 , w 1 ← w 0 − η d L d w ∣ w = w 0 w^1,\quad w^1\leftarrow w^0-\eta\dfrac{\mathbb{d}L}{\mathbb{d}w}|_{w=w^0} w1,w1w0ηdwdLw=w0 ,其中 η \eta η是学习率。因为参数移动的方向是梯度的反方向,所以前面的式子中用的是减号。

如果有两个参数 w , b w,b w,b,问题就变成了求得 w ∗ , b ∗ = a r g min ⁡ w , b L ( w , b ) w^*,b^*=arg\min \limits_{w,b} L(w,b) wb=argw,bminL(w,b)。解决方法和之前相同,只不过原先求的是导数,现在求的是偏导数。首先要随机给定一个初始值 w 0 , b 0 w^0,b^0

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值