CS229 Lecture 11

15 篇文章 0 订阅
4 篇文章 0 订阅

CS229 Lecture 11


课程要点:

Bayesian statistics and regularization
Online Learning
Advice for apply ML Algorithm


贝叶斯统计和正则化

上节课讲了如何通过特征选择减少特征数目,进而降低算法出现过拟合的风险,本节会介绍另一种降低过拟合的方法,即正则化,这种方法不会减少特征的数目。

前面讲述过线性回归其通过最大似然的方式求解 θ \theta θ

max ⁡ θ    ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) \mathop {\max }\limits_{\theta}\;\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta) θmaxi=1mp(y(i)x(i);θ)

这种通过极大似然求解 θ \theta θ实际上是频率学派的观点,他们认为 θ \theta θ并不是变量,而是确定的。它影响着 y y y。我们拿到的一组数据样本是由 θ \theta θ控制者 y y y x x x,虽然无法确切的知道 θ \theta θ是什么,但 θ \theta θ并不是变量,因此频率学派认为想得到 θ \theta θ,找到一个 θ ^ \hat{\theta} θ^使得 x ( i ) x^{(i)} x(i)出现那么 y ( i ) y^{(i)} y(i)也以最大概率出现,那么这个 θ ^ \hat{\theta} θ^就十分贴近 θ \theta θ了。

贝叶斯学派的观点认为 θ \theta θ是随机变量,当我们想预测房价的时候,我们会首先猜测 θ \theta θ的分布,即基于其一个先验概率。假设 θ \theta θ服从均值为 0 0 0方差为 τ 2 I \tau^2I τ2I的高斯分布。

p ( θ ) − p r i o r p(\theta) -prior p(θ)prior

θ ∼ N ( 0 , τ 2 I ) \theta\sim N(0,\tau^{2}I) θN(0,τ2I)

在给予训练数据后

S = { ( x ( i ) , y ( i ) ) } i = 1 m S=\{(x^{(i)},y^{(i)})\}_{i=1}^{m} S={(x(i),y(i))}i=1m

计算 θ \theta θ的后验概率为:

P ( θ ∣ S ) ∝ ( ∏ i = 1 m P ( y ( i ) ∣ x ( i ) , θ ) ) P ( θ ) P(\theta|S)\propto(\prod_{i=1}^{m}P(y^{(i)}|x^{(i)},\theta))P(\theta) P(θS)(i=1mP(y(i)x(i),θ))P(θ)

可以注意到上式中的 θ \theta θ x ( i ) x^{(i)} x(i)是通过 , , ,分隔的,这里表示 θ \theta θ是个变量。

当由新的数据 x x x时,其预测值为 y y y的概率为:

P ( y ∣ x , S ) = ∫ θ P ( y ∣ x , θ ) p ( θ ∣ S ) d θ P(y|x,S)=\int_{\theta}P(y|x,\theta)p(\theta|S)d\theta P(yx,S)=θP(yx,θ)p(θS)dθ

关于 y y y的数学期望为:

E [ y ∣ x , S ] = ∫ y y P ( y ∣ x , S ) d y E[y|x,S]=\int_{y}yP(y|x,S)dy E[yx,S]=yyP(yx,S)dy

从上面的式子中很容易看出,要真正求解 θ \theta θ的后验概率是很难的, θ \theta θ n + 1 n+1 n+1维向量,而且还要做积分。

因此在实际应用中我们会使用一个近似方法替代后验概率,通常使用MAP(maximum a posteriori)估计 θ \theta θ

θ ^ M A P = a r g    max ⁡ θ    ∏ i = 1 m p ( y ( i ) ∣ x ( i ) , θ ) p ( θ ) \hat{\theta}_{MAP}=arg\;\mathop {\max }\limits_{\theta}\;\prod_{i=1}^{m}p(y^{(i)}|x^{(i)},\theta)p(\theta) θ^MAP=argθmaxi=1mp(y(i)x(i),θ)p(θ)

预测时:
h ( θ ^ ) = θ ^ M A P T x h(\hat{\theta})=\hat{\theta}_{MAP}^{T}x h(θ^)=θ^MAPTx

上面式子中前半段实际和极大似然是一致的,后半段多乘以了 p ( θ ) p(\theta) p(θ),通常会选 θ \theta θ的先验分布为 θ ∼ N ( 0 , τ 2 I ) \theta\sim N(0,\tau^{2}I) θN(0,τ2I),这样估计出来的 θ \theta θ通常会比较小,这就意味着 n + 1 n+1 n+1维上有很多参数接近0,那么就算是多项式,即使 n ≫ m n\gg m nm也可以尽量的避免过拟合。

极大似然尝试最小化 m i n ∑ ∣ ∣ y ( i ) − θ T x ( i ) ∣ ∣ 2 min\sum||y^{(i)}-\theta^{T}x^{(i)}||^{2} miny(i)θTx(i)2,我们知道如果数据点较少,用极大似然估计的化很有可能会出现过拟合的情况,而使用贝叶斯由于大多数参数接近于0,拟合出的曲线就无较大波动。使用先验概率就相当于 m i n ∑ ∣ ∣ y ( i ) − θ T x ( i ) ∣ ∣ 2 + λ ∣ ∣ θ ∣ ∣ 2 min\sum||y^{(i)}-\theta^{T}x^{(i)}||^{2}+\lambda||\theta||^{2} miny(i)θTx(i)2+λθ2,式子后面的 ∣ ∣ θ ∣ ∣ 2 ||\theta||^{2} θ2起惩罚作用,这样会使得拟合的曲线更为平滑,即使 θ \theta θ维度很高。


Online Learning

前面提及的基本都是批量学习,即给予一批(batch)数据,然后我们根据这批数据学习出一个模型来,然后通过这个模型根据 x x x去预测 y y y

但是在线学习不同与批量学习,在线学习的数据是不断过来的,模型需要不断的学习,比如又一个在线学习的分类学习算法,最开始给一个 x ( 1 ) x^{(1)} x(1)然后预测 y ( 1 ) y^{(1)} y(1)是1还是0,你预测出 y ^ ( 1 ) \hat y^{(1)} y^(1)后,告诉你真正的 y ( 1 ) y^{(1)} y(1),如果 y ^ ( 1 ) ≠ y ( 1 ) \hat y^{(1)}\neq y^{(1)} y^(1)=y(1),需要更新模型。,给予 x ( ) 2 x^{()2} x()2预测 y ( 2 ) y^{(2)} y(2),预测出的值为 y ^ ( 2 ) \hat y^{(2)} y^(2),如果 y ^ ( 2 ) ≠ y ( 2 ) \hat y^{(2)}\neq y^{(2)} y^(2)=y(2),需要更新模型。给予 x ( 3 ) x^{(3)} x(3)…,以此类推。不断预测不断学习的过程。

现在学习总的在线误差计算方式为 ∑ i = 1 m 1 { y ^ ( 2 ) ≠ y ( 2 ) } \sum_{i=1}^{m} 1\{\hat y^{(2)}\neq y^{(2)}\} i=1m1{y^(2)=y(2)}

例如前面学习的感知器学习算法就是一种在线学习。

其初始化 θ = 0 ⃗ \theta=\vec{0} θ=0
其参数的更新策略是 θ ( k + 1 ) = θ ( k ) + α ( y ( i ) − h θ ( x ( i ) ) ) x ( i ) \theta^{(k+1)}=\theta^{(k)}+\alpha(y^{(i)}-h_{\theta}(x^{(i)}))x^{(i)} θ(k+1)=θ(k)+α(y(i)hθ(x(i)))x(i)

实际上可以通过数学证明,感知器算法的错误率实际上是有上界的,而且上界和具体的学习样本数和特征维度无关。

详细证明请参见cs229-notes6

The perceptron and large margin classifiers


应用机器学习算法的建议

  1. 算法模型bug诊断
  2. 错误分析和消蚀(ablative)分析
  3. 过早优化

如果有一个反垃圾的算法,测试误差高达20%,这显然是不可接受的,那么如何去分析优化这个问题,那些方向优化才是正确的呢?

  • 找到更多的训练数据
  • 使用更少的特征
  • 用更多的特征
  • 改变邮件提取的特征
  • 运行更多轮的梯度下降
  • 使用牛顿方法
  • 使用SVM方法

上面有很多方法可选,但是到底要使用那个方法,首先需要分清问题的原因处在何处,而不是着急去尝试。否则可能会浪费更多的时间。

算法测试误差高首先分清是高方差导致还是高偏差导致。

高方差
上图表现的是算法存在高方差,训练误差和测试误差随着样本变化的情况。可以看到后期随着样本数目的增多,测试误差依然下降,测试误差和训练误差差距较大。那么可以通过增加样本数,减少训练误差和测试误差的差距。之所以随着训练样本的增多,训练误差会增加,是因为样本越多也就越难以拟合。
高偏差
上图表现的是算法存在高偏差,训练误差和测试误差随着样本变化的情况。可以看到后期随着样本数目的增多,测试误差基本不再下降,且训练误差过大,训练误差和测试误差差距较小。就算增加样本数目也不可能使得训练误差下降。(高偏差类似于用一个以此方程去拟合一个二次方程的数据)

通过上面的论述可知,更多的样本和更小的特征可以修复高方差问题。而更多的特征和改变特征可以修复高偏差问题。


如果说你的学习算法分为很多步,那么可以应用错误分析和消蚀分析的方法。

错误分析主要是假设当前步骤做的不够好,替换一个更好的解决方案,观察其是否对准确率有较大提升,进而确定我们重点优化的方向。

消蚀分析就是抽出某部分,观察其对准确率的影响,同样可以观察到某部分对整个算法的重要程度。


一般是快速作出你的算法来,然后再诊断你算法准确率不佳的原因,而不是一开始就小心翼翼的设计特征的选取等细枝末节。有时候算法不佳问题根本不是出在你认为的地方,算法构建出来后通过诊断分析其原因渐渐提升其准确率,才是更为正确应用机器学习算法的方式。避免过早的优化浪费时间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值