zoukankan      html  css  js  c++  java
  • 林轩田《机器学习基石》课程笔记

    1.绪论

    机器学习(Machine Learning,ML)解决具有潜在模式的问题,在衣食住行、教育等领域均有应用。机器学习为模拟未知的目标函数:f:x→y,通过已有的数据得出推论函数g。
    假说集合包含好或坏的(我觉得是根据是否符合问题的模式)的假说,学习模型=学习算法+假说集合。
    人工智能(Artificial Intelligence,AI)包括使用game tree的传统AI,也包括使用ML的AI。
    算法使用资料和假说集合得到推论。A(lgorithm) takes D(ata) and H(ypotheses,hyposhesis复数) to get g.

    2.简单的假说集模型:Perceptron

    其原理类似于考试评定的过程,每道题的分数和权重的积的总和,如果大于60,则判定为及格,否则不及格。
    推论g根据实际资料y逼近问题的潜在模式f:(g(x_{n})=f(x_{n})=y_{n})
    数学原理:sign()函数取的是数的正负号,假设(x_{n})有d维属性,则(w^{T})是长度为(d+1)的行向量。
    假说集合(h(x)=sign((sum_{i=1}^{d}w_{i}x_{i})-threshold)=sign((sum_{i=1}^{d}w_{i}x_{i})+(-threshold)*1)=sign(w^{T}x))
    训练的思路是快速找到最贴近训练数据集的g,迭代训练法,设第t代得到的推论关系为(g_{t})(推论的计算方式是h(x)),(g_{0})训练出来时权重为(w_{0}),依轮不断地纠正g在D上的错误,减小损失。g的纠正方式((t=0,1,cdots))(w_{t+1}=w_{t}+y_{n(t)}x_{n(t)}),错误的表现形式是(sign(w_{t}^{T}x_{n(t)}) ot=y_{n(t)},即y_{n(t)}w_{t}^{T}x_{n(t)}leq0),如图所示。

    (sign(cos<vec w, vec x>)=sign(vec wvec x))
    如此往复,直到更新到识别数据集上的所有数据不会有错误发生,得到最后的w((w_{PLA}))(注:PLA——Perceptron Learning Algorithm)作为最终的推论g。举例说明perceptron的训练过程见视频2.2 Learning to Answer Yes_No - Perceptron Learning Algorithm 10:04处
    当然,停止条件不一定要求模型在训练数据集上的表现为100%正确,一是模型可能永远无法满足训练数据集100%正确,二是可能最终的结果过拟合,可以设置在数据集上正确率的指标为停止条件。
    PLA算法适合于解决线性可分问题,数据D线性可分(Leftrightarrow)PLA能停止,即对于线性可分数据集(D=(x_{n}, y_{n}))的所有数据,存在(w_{f})使(y_{n}=sign(w_{f}^{T}x_{n}))。由于(w_{f})能将所有(x_{n})归类到正确的(y_{n})上,故(y_{n(t)}w_{f}^{T}x_{n(t)}geqmin_{n}y_{n}w_{f}^{T}x_{n}>0),则(w_{f}^{T}w_{t+1}=w_{f}^{T}(w_{t}+y_{n(t)}x_{n(t)})geq w_{f}^{T}w_{t}+min_{n}y_{n}w_{f}^{T}x_{n}>w_{f}^{T}w_{t}+0),可以看到随着迭代次数t的增加,(w_{f}^{T}w_{t})的值不断增大,假设(w_{t})的长度变化不大则说明(w_{f})(w_{t})间的夹角在缩小,(w_{t})在不断逼近(w_{f})。接下来证明(w_{t})确实在不断逼近(w_{f}),当g在D上的表现出现错误,即(y_{n(t)}w_{t}^{T}x_{n(t)}leq0)时,(w_{t})的值就会更新,(left| w_{t+1} ight|^{2}=left|w_{t}+y_{n(t)}x_{n(t)} ight|^{2}=left|w_{t} ight|^{2}+2y_{n(t)}w_{t}^{T}x_{n(t)}+left|y_{n(t)}x_{n(t)} ight|^{2}leqleft|w_{t} ight|^{2}+0+left|y_{n(t)}x_{n(t)} ight|^{2}leqleft|w_{t} ight|^{2}+max_{n}left|x_{n} ight|^{2}),假设在limits次试错之后达到(w_{f}状态),假设(w_{0}=0),则(left|w_{f} ight|leqsqrt{limitsmax_{n}left|x_{n} ight|^{2}}),T轮试错后(left|w_{t} ight|leqsqrt{Tmax_{n}left|x_{n} ight|^{2}})(w_{f}^{T}w_{T}=w_{f}^{T}(w_{T-1}+y_{n(T-1)}x_{n(T-1)})geq w_{f}^{T}w_{T-1}+min_{n}y_{n}w_{f}^{T}x_{n}geqcdotsgeq w_{f}^{T}w_{0}+Tmin_{n}y_{n}w_{f}^{T}x_{n}=Tmin_{n}y_{n}w_{f}^{T}x_{n})(frac{w_{f}^{T}}{left|w_{f} ight|}frac{w_{T}}{left|w_{T} ight|}geqfrac{Tmin_{n}y_{n}w_{f}^{T}x_{n}}{left|w_{f} ight|sqrt{T}max_{n}left|x_{n} ight|}=sqrt{T}frac{min_{n}y_{n}x_{f}^{T}x_{n}}{left|w_{f} ight|max_{n}left|x_{n} ight|}),当(limits=T)时,(frac{w_{f}^{T}}{left|w_{f} ight|}frac{w_{T}}{left|w_{T} ight|}=1),可得出(limitsleqfrac{max_{n}left|x_{n} ight|^{2}}{(min_{n}y_{n}frac{w_{f}^{T}}{left|w_{f} ight|}x_{n})^{2}})根据结论的式子可以看出PLA算法会停止,(w_{f})(w_{t})正规化的向量的夹角在减小,最终内积会极接近1说明两个向量重合,迭代找最优解的次数也有上限。
    但以上考虑的是理想的数学情景,现实情况是数据囿于噪音以及未知不可考是否为线性可分的模式或者某种临界条件影响PLA算法的发挥,导致该算法无法满足100%正确而停止(注意limits和(w_{f})有关系,在训练之前我们并不会知道(w_{f})),由是提出pocket PLA算法。算法目的:找出一条能忍受部分错误的线。通过(w_{f}=argminsum_{n=1}^{N}[y_{n} ot=sign(w^{T}x_{n})])方式寻找最优解是NP-hard问题,提出的pocket算法流程如下:

    1. 初始化口袋权重(hat{w})
    2. 对于(t=0,1,cdots),由发生的错误((x_{n(t)}, y_{n(t)}))根据(w_{t+1}=w_{t}+y_{n(t)}x_{n(t)})找到(w_{t+1}),比较(w_{t+1})(hat{w})在数据集上的错误率,保留效果好的w值为(hat{w})
    3. 重复2直到足够的迭代。
      pocket算法相比PLA算法在每一迭代中多了判断权值表现优劣的步骤,速度相对较慢。对于真正线性可分的数据来说,两个算法的处理效果是相同的,最后都能达到无错状态,但谁能保证手里的数据一定是线性可分的?

    3.机器学习的领域分类

    • 按照输出y的类型分为:
    1. 二元分类,(y={-1, +1})
    2. 多元分类,(y={1, 2, cdots, k})
    3. 回归分析,y为实数,例如预测病人什么时候病会好
    4. 结构化学习,y为一种结构体,例如预测语句的解析树
    • 按照标签特征分为:
    1. 监督式学习,每个数据都有标签。
    2. 非监督式学习,与1相反,最主要的问题是对学习效果的衡量困难,采取集群(clustering)策略对应监督式的多分类,采取密度估计策略对应监督式的有限回归
    3. 半监督式,少部分数据有标签。
    4. 增强学习(reinforcement learning),对学习的结果有奖惩,序列化地使用部分或者隐式的信息去学习。
    • 按照样本的训练序列分为:
    1. batch learning,跑模型,然后结果放到环境中使用,使用过程中预测方式永不改变,需要人工调下或者上架模型。
    2. online learning,模型可以在生产环境中根据用户或者结果的反馈继续训练,PLA和增强学习可以应用于参数的不断更新。
    3. active learning,模型序列化地主动问问题,询问其不懂的地方的输出。
    • 按照输入数据的特征分为:
    1. 具体特征:(Xsubseteqmathbb{R}^{d}),输入的每一位代表一个物理意义。
    2. raw features:如图像、语音,需要借助特征工程转换成具体特征。
    3. 抽象特征:例如做根据用户ID和歌曲ID预测评分的AI用到的数据结构是(用户ID,歌曲ID,评分),数据无物理意义,需要进行特征转换。

    4.机器学习的可行性

    机器学习应用在对未知情景的预测上,要求推论g与问题潜在模式f真的接近。但"no free lunch"现象(对于输入的条件实际上会出现各种各样的情况,目前只让AI学到了一些数据,当模型应用于外部的数据时,会发生潜在的巨大的错误),质疑着机器学习的能力。
    在大样本(数量N很大),物体概率分布实际值μ与抽样结果值v关系满足霍夫丁不等式:(P[|v-μ|>ε]leq 2exp(-2ε^{2}N)),从该不等式看出,N很大时(v=μ)是PAC(probably approximately correct)的,即未知的μ与已知的v相近。
    获取足够的数据,机器学习中采用一种假设h,h逼近理想情况的程度(P(h(x) ot=f(x)))(相当于μ)接近统计来的正确率(P(h(x_{n}) ot=y_{n}))(相当于v),out-of-sample error(within ε)(E_{out}(h))接近已知的in-sample error (E_{in}(h)=frac{1}{N}sum_{n=1}^{N}[![H(x_n) eq y_n ]!])(P[|E_{in}(h)-E_{out}(h)|>ε]leq 2exp(-2ε^{2}N)),根据(E_{in}(h))推测(E_{out}(h)),不需要知道(E_{out}(h))(E_{in}(h)=E_{out}(h))PAC,但是(E_{in}(h))有取较大值的情况,需要验证扔掉(E_{in}(h))较大的h。(P_{D}[BAD D]=sum_{all possible D}mathbb{P}(D)·[![BAD D]!])
    若机器学习中采用(|H|)种假设(多种假设对比从而选择表现好的,设定为模型的假设),对于假设中的每个h来说,坏的例子(BAD D)会导致(E_{in}(h))(E_{out}(h))的值相差较远,由该定义知,(P[BAD D]=P[|E_{in}(h)-E_{out}(h)|>ε])。【小问题:150个人每人手里有1枚硬币,每人连续掷5次,则至少有一个人掷到五次正的概率为(1-(frac{31}{32})^{150}>0.99)。结论:假设参数完全符合数据的规律的情况少之又少】,(bad data for many hLeftrightarrow no "freedom of choice" by ALeftrightarrow 存在h使E_{in}(h)和E_{out}(h)的差值很大)(P_{D}[BAD D]=P_{D}[BAD D for h_{1} orcdots BAD D for h_{|H|}]leq P_{D}[BAD D for h_{1}]+cdots+P_{D}[BAD D for h_{|H|}]leq 2|H|exp(-2ε^{2}N))。由此知,若假设个数|H|有限,N足够大,对任意A挑选的g,均有(E_{out}(g)approx E_{in}(g)),A找到(E_{in}(g)approx0),PAC保证(E_{out}(g)approx0),则此时亦不需要知道(E_{out}(g)),将(E_{in}(g))的值作为机器学习成功与否的指标。

    5.假设无限多时的机器学习可行性

    • 训练时保证(E_{in}(g)approx0),测试时保证(E_{out}(g)approx E_{in}(g))。由上一节公式(P[BAD]leq 2|H|exp(cdots))知,|H|值较小(用于选择的假设少)时,(BAD D)较少,训练时模型的性能描述较准确,否则,准确学习到潜在模式f的可能性会降低。探讨假设无限多时机器学习的可行性有了较大的难度。
    1. 从数据集每项输入在输出结果的不同表现出发,能够将假设归为有限的类别,而相同的类别上(BAD D)的情况是一致的,是重叠的(overlapped)(上节推导中重复计上相同类别假设的(BAD D)的数量导致上限不可数,去掉重叠的计数更有把握证明P[BAD]是有限小的)。比如对于(H={all lines in mathbb{R}^{2}})解决二分类问题(可采用2D-Perceptron),4个输入((x_1, x_2, x_3, x_4))可将H分为14种类别((2^{4}-2),有2种情况无法用线将输入分为2类),如图所示。

      同理,2个输入分为4种,3个输入分为8种。
    2. 我们设对于N个输入至多能将无限多假设分为growth(N)种类别,其中growth(N)被称为成长函数。对于二分类问题,(growth(N)leq 2^N)
      1)对于1.中2D-Perceptron问题的假设,从N=4开始(growth(N)<2^N)。在此提出概念:若假设能解决所有输入二分类的情况,则说明(growth(N)=2^N),当假设无法解决所有输入二分类,即(growth(N)<2^N)时,说明此时N是一个断点(break point),设最小的断点为k,则(k+1, k+2,cdots)均为断点。此例中k=4。
      2)Positive Rays问题的假设是(h(x)=sign(x-a)),对于N个一维点来说,a可以位于N+1个区块上(不考虑临界条件),由是(growth(N)=N+1)
      如图所示。此种情况k=2。

      3)Positive Intervals问题的假设是(h(x)=egin{cases}1,&if xin[a, b) \ -1,&otherwiseend{cases}),对于N个一维点来说,正样本的两个端点可能在N+1个区块中的两个或者同一个,算出成长函数如图所示,k=3。

      4)Convex Sets问题如图所示,输入(Xinmathbb{R}^2),假设是(h(x)=egin{cases}1,&if x in a convex region\-1,&otherwiseend{cases})。设想N个输入数据在一个圆周上,我们可以根据圆周上的这些点画圆的内接凸多边形,内接凸多边形向外扩张一点点的多边形根据包含输入数据的个数和编号来划分的种类有(2^N)种,故成长函数 (growth(N)=2^N),该问题中不会有断点的出现。
    • 欲证明假设无限多时的机器学习可行性,根据第4章的公式(P[|E_{in}(h)-E_{out}(h)|>ε]leq2|H|exp(-2ε^{2}N)),我们可以使用growth(N)(有限)替代无限大的|H|且需要证明(growth(N)ll2^N)。当growth(N)是多项式函数时,上一个公式的条件很好满足,但成长函数是指数增长时,情况就变糟了(如Convex Sets问题,训练出的模型预测准确率可能就不高)。根据上述2)、3)、4)问题的分析,我们提出假想:如果k值存在,(growth(N)=O(N^k-1))。由此开拓出证明2D-Perceptron问题的模型训练可行性的思路,在下一节中证明。

    6.2D-Perceptron问题的机器学习可行性分析

    仍然针对二分类问题,断点k极大限制了growth(N)(N>k时)的最大可能值,如k=2时,以下成长函数缩写为gr(N),gr(1)=2, gr(2)的最大可能值为3,gr(3)的最大可能值为4,max(gr(3))=4分析过程:gr(3)最大可能情况以gr(2)最大可能情况最为基础。假设gr(2)时,(x_{1}=×且x_{2}=×)情况无法被h成功分类,则之后任何存有不少于2个×x组合的输入序列都无法被h成功分类,如下图所示。

    当k=1时,max(gr(N))=1。(max(gr(N))=2^{N}(N<k))(max(gr(N))=2^{N}-1(N=k)),最为关键的是讨论当N>k时,gr(N)的值。
    我们设函数B(N,k)表示断点为k时,gr(N)的最大可能值,这样对gr的讨论排除了h的细节影响,转移到组合数学的分析上来。
    考虑B(4,3),列出B(4,3)时的输入序列组合,并将组合按照规律划分。以前3位内容分类,分到2个序列的有α类,分到1个序列的有β类,则B(4,3)=2α+β。(我总觉得第6行(x_4)该是圈)

    将2α+β拆成α+β和α找上界,分析B(4,3)与B(3,?)的关系。


    同例证的道理得出数学关系(B(N,k)leq B(N-1,k)+B(N-1, k-1)),填完表格,注意B是gr的上界,而N>k时,又有了B的上界,更甚上界与上界的加和。

    根据数学归纳法(太笨了,不会证)推出(B(N,k)leqsum_{i=0}^{k-1} binom{N}{i}),右式的最高次项是(N^{k-1}),故上一节的猜想是正确的。只要k存在,则成长函数就是多项式,增长速度不算太快。

    现在我们重新考虑一下N很大时(mathbb{P}[exists hin H s.t. |E_{in}(h)-E_{out}(h)|>ε]leq2gr(N)exp(-2ε^2N))式的处理。
    1)(E_{in}(h))的计算是有限的,而(E_{out}(h))的计算是无限多的,故我们考虑将(E_{out})替换掉,我们可以使用有N条数据的验证集D'计算(E_{in}')来代替(E_{out})(BAD h of E_{in}-E{out}approx BAD h of E_{in}-E_{in}'),由图得到关系(frac{1}{2}mathbb{P}[exists hin H s.t. |E_{in}(h)-E_{out}(h)|>ε]leqmathbb{P}[exists hin H s.t. |E_{in}(h)-E_{in}'(h)|>frac{ε}{2}])

    2)将无限的H归为(H(x_1, cdots, x_N, x'_1, cdots, x'_N)即上界为gr(2N))种,由此得(BADleq2mathbb{P}[exists hin H s.t. |E_{in}(h)-E'_{in}(h)|>frac{ε}{2}]leq2gr(2N)mathbb{P}[fixed h s.t. |E_{in}(h)-E'_{in}(h)|>frac{ε}{2}])
    3)
    2D perceptron的断点是4,成长函数(gr(N)=O(N^3)),证明了2D perceptron的可行性。

    7.从VC Bound探究多维感知器的学习可行性

    从之前的章节我们知道,当gr(N)有断点且N足够大时,(E_{out}approx E_{in})可能存在保证机器学习的可行性。
    (gr(N)leq B(N,k)leqsum_{i=0}^{k-1} binom{N}{i}leq N^{k-1}),对于(g=A(D)in H)且k存在时,(P_D[|E_{in}(g)-E_{out}(g)>ε|leq4(2N)^{k-1}exp(-frac{1}{8}ε^2N)])
    到这里我们可以说,如果gr(N)有断点(证明H好)、N足够大(证明D好),则能归纳出(E_{out}approx E_{in}),在此基础上若A采取了较小(E_{in})的g(证明A好),最后机器学习到的结果是可信的。
    我们给最大非断点一个正式名称叫(d_{VC}(H)),由定义知,(d_{VC}=k-1),若(N>d_{VC}),则N是H的一个断点。
    不管A,输入数据的分布P和目标函数f是怎样,只要(d_{VC})存在,可以得出通过g学习到的内容是可信的。
    因为1D时,(d_{VC}=2),2D时,(d_{VC}=3),下面我们证明d-D perceptron的(d_{VC}=d+1)
    1)证明(d_{VC}leq d+1),我们可以列举出在面对d+1个数据时,存在能解决全部输入二分类问题的情况,这种情况中X是可逆的,即对任意y值,均有w使得sign(Xw)=y,即Xw=y,可求得(w=X^{-1}y),是自洽的。
    2)证明(d_{VC}geq d+1),证明在面对d+2个数据时,不存在能解决全部输入二分类问题的情况,我们可以看到d+2个行向量有线性相关性,即(w^Tx_{d+2}=a_1w^Tx_1+a_2w^Tx_2+cdots+a_{d+1}w^Tx_{d+1}>0或者<0)(即d+2个数据对应的分类结果是确定的),另一个分类的结果无论如何都无法用H来满足。
    由此我们证明了d-D感知器(d_{VC}=d+1)
    权重w创造了自由度,实用的规则:大多数情况下, (d_{VC}approx)自由参数的数量。
    (P_D[|E_{in}(g)-E_{out}(g)>ε|leq4(2N)^{k-1}exp(-frac{1}{8}ε^2N)]),我们

    考虑(E_{out}(g))的上界


    理论上(Napprox10000d_{VC})方能满足样本的复杂性,实际上(Napprox10d_{VC})就足够了。

    参考链接

    1

    林轩田机器学习基石(国语)

    2

    感知机 PLA(Perceptron Learning Algorithm)

  • 相关阅读:
    变量和数据类型
    Manager 多进程之间的数据共享
    多进程之间的数据传输 Pipe
    多进程
    消费者 生产者
    queue 队列优先级
    Python 最难的问题
    threading 多线程
    线程进程概述
    倒计时器 小玩意
  • 原文地址:https://www.cnblogs.com/tellw/p/13126296.html
Copyright © 2011-2022 走看看