最近发现本身机器学习学的不够系统,不少知识点都存在欠缺,全部准备找一个稍微有一点难度的课程仔细学习一下。台大的机器学习比较有深度并且讲的深刻浅出,因此我准备一边学习台大机器学习的课程一边作一些读书笔记。我也决定使用IPython-notebook来进行记录笔记。python
learning:acquiring skill with experience accumulated from observation算法
%%dot digraph G { rankdir=LR; observations -> learing -> skill }
Machine learning:acquiring skill with experience accumulated/computed from dataapi
%%dot digraph G { rankdir=LR; data -> ML -> skill; }
skill: improve some proformance measure(e.g. prediction accuracy)app
%%dot digraph G { rankdir=LR; data -> ML -> "improved performance measure"; }
%%dot digraph G { rankdir=LR;a -> b; b->c; c -> d; e ->c; a [shape=box,sides=4,skew=.4,color=lightblue,style=filled,label="想要获得的目标函数\n f: x->y"]; b [shape=box,sides=4,skew=.4,label="训练样本\n D:(x_1,y_1),...,(x_n,y_n)"] c [label="learning algorithm A"]; d [shape=box, label="最终获得的目标函数\n g"]; e [label="假设空间\n H"]; }
感知机的通常工做流程以下:
咱们要找到一个w使得 \(y = w^Tx\)可以刚好分割咱们的数据集。
\(w_0\)初始化为0机器学习
For t = 0,1,...ide
该方法精髓就是知错能改,—— A fault confessed is half redressed!函数
首先PLA要终止即必须数据集线性可分,那么是否数据集线性可分PLA必定会终止呢?学习
\(w_f\)是可以划分数据集的完美曲线,因此有:ui
\(y_{n(t)}w_f^Tx_{n(t)}\ge\min\limits_{n}y_{n(t)}w_f^Tx_{n(t)}>0\)idea
咱们能够推导出\(w_f^Tw_t\)随着\((x_{n(t)},y_{n(t)})\)的更新,会愈来愈大。
\[ w_f^Tw_{t+1} = w_f(w_t + y_{n(t)}x_{n(t)}) \ge w_f^Tw_t + \min\limits_{n}y_nw_f^Tx_n > w_f^Tw_t + 0 \]
\(y_{n(t)}w_f^Tx_{n(t)}\)在不断变大意味着两点
下面咱们要证实w的长度是有上界的,咱们有:
\[ \begin{align} ||w_{t+1}||^2 &= || w_t + y_{n(t)}x_{n(t)}||^2 \\ &= ||w_t||^2 + 2y_{n(t)}w_t^Tx_{n(t)} + ||y_{n(t)}x_{n(t)}||^2 \\ &\le ||w_t||^2 + 0 + ||y_{n(t)}x_{n(t)}||^2 \\ &\le ||w_t||^2 + \max\limits_{n}||y_nx_n||^2 \end{align} \]
即有:\(||w_t||^2 \le T\max\limits_{n}||y_nx_n||^2\),对于一个固定的训练集来讲后者是一个固定值。这说明随着迭代\(w_f,w_t\)愈来愈接近了。
并且咱们能够证实更新次数T是有上界的:
\[ \frac{w_f^T}{||w_f||}\frac{w_T}{||w_T||}\ge\sqrt{T}\cdot constant \]
证实以下:
\[ \begin{align} w_f^Tw_t &= w_f^T(w_{t-1} + y_{n-1}x_{n-1}) \\ &\ge w_f^Tw_{t-1} + \min\limits_{n}y_nw_f^Tx_n \\ &\ge w_0 + T*\min\limits_{n}y_nw_f^Tx_n \\ &\ge T*\min\limits_{n}y_nw_f^Tx_n \end{align} \]
对\(||w_t||^2\)而言,咱们有
\[ \begin{align} ||w_t||^2 &= ||w_{t-1} + y_{n(t-1)}x_{n(t-1)}||^2 \\ & \le T\max\limits_{n}||x_n||^2 \end{align} \]
根据以上能够得出
\[ \frac{w_f^T}{||w_f||}\frac{w_T}{||w_T||}\ge\sqrt{T}\cdot \frac{\min\limits_{n}y_nw_f^Tx_n}{||w_f||\sqrt{\max\limits_{n}||x_n||^2}} \]
咱们有
\[ \frac{w_f^T}{||w_f||}\frac{w_T}{||w_T||}\le1 \]
最后咱们能够得出
\[ T\le\frac{\max\limits_{n}||x_n||^2\cdot ||w_f||^2}{{\min\limits_{n}}^2y_nw_f^Tx_n} \]
现实中咱们很可贵到彻底线性可分的数据集,数据集可能会有噪声,为了应对噪声,咱们采用新的权值更新策略
权值初始化为\(\hat{w}\),并将其保存,至关于把最好的w放入到口袋中。
For t = 0,1,...