李宏毅机器学习 笔记_李宏毅 机器学习 笔记 - CSDN
  • 李宏毅机器学习完整笔记》发布,笔记+视频+代码一应俱全!
    展开全文
  • 李宏毅机器学习笔记

    2020-07-30 23:31:22
    李宏毅机器学习笔记,文档文件,笔记全面,总结充分,仅供学习
  • 李宏毅机器学习·笔记自己整理成了PDF,现在分享给大家。
  • 李宏毅机器学习笔记】1、回归问题(Regression) 【李宏毅机器学习笔记】2、error产生自哪里? 【李宏毅机器学习笔记】3、gradient descent 【李宏毅机器学习笔记】4、Classification 【李宏毅机器学习笔记】5...

     

    【李宏毅机器学习笔记】1、回归问题(Regression)

    【李宏毅机器学习笔记】2、error产生自哪里?

    【李宏毅机器学习笔记】3、gradient descent

    【李宏毅机器学习笔记】4、Classification

    【李宏毅机器学习笔记】5、Logistic Regression

    【李宏毅机器学习笔记】6、简短介绍Deep Learning

    【李宏毅机器学习笔记】7、反向传播(Backpropagation)

    【李宏毅机器学习笔记】8、Tips for Training DNN

    【李宏毅机器学习笔记】9、Convolutional Neural Network(CNN)

    【李宏毅机器学习笔记】10、Why deep?(待填坑)

    【李宏毅机器学习笔记】11、 Semi-supervised

    【李宏毅机器学习笔记】 12、Unsupervised Learning - Linear Methods

    【李宏毅机器学习笔记】 13、Unsupervised Learning - Word Embedding(待填坑)

    【李宏毅机器学习笔记】 14、Unsupervised Learning - Neighbor Embedding(待填坑)

    【李宏毅机器学习笔记】 15、Unsupervised Learning - Auto-encoder(待填坑)

    【李宏毅机器学习笔记】 16、Unsupervised Learning - Deep Generative Model(待填坑)

    【李宏毅机器学习笔记】 17、迁移学习(Transfer Learning)

    【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)

    【李宏毅机器学习笔记】 19、Structured Learning - Introduction(待填坑)

    【李宏毅机器学习笔记】 20、Structured Learning - Linear Model(待填坑)

    【李宏毅机器学习笔记】 21、Structured Learning - Structured SVM(待填坑)

    【李宏毅机器学习笔记】 22、Structured Learning - Sequence Labeling(待填坑)

    【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)

    【李宏毅机器学习笔记】 24、集成学习(Ensemble)

    ------------------------------------------------------------------------------------------------------

    【李宏毅深度强化学习】视频地址:https://www.bilibili.com/video/av10590361?p=13

    课件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html

    -------------------------------------------------------------------------------------------------------

    使用反向传播(Backpropagation)原因

    经过前面几篇笔记的介绍,知道可以用gradient descent来更新参数,使Loss Function最小化。

    但是面对Neural Network可能上百万的参数,做gradient descent会很困难。所以需要引入反向传播(Backpropagation)使gradient descent 做得更有效率一点

    链式法则(Chain Rule)

    反向传播(Backpropagation)就用到链式法则(Chain Rule)的知识,没有涉及其他高深的知识。

    反向传播(Backpropagation)

     C^n是估测出来的y和target值y\hat之间的距离,Loss Function则是所有 C^n 的累加。

    对Loss Function求w的偏微分结果如图所示,等于。接下来就主要讲怎么解这个偏微分。

    为方便讲解,取网络中的红色三角形标识的区域进一步讲解。

    以图中的部分网络为例,根据链式法则可以知道,偏微分 

    计算的过程叫做Forward pass,因为这一项是从网络由前往后计算得出的(等下就知道为什么是由前往后)。

    计算的过程叫做Backward pass,因为这一项是从网络由后往前计算得出的(等下就知道为什么是由后往前)。

    Forward pass

    Forward pass就是计算  。以图中的例子,其实可以知道,这个偏微分的结果是可以口算的。

    它都会等于weight前面的输入 x1,x2 。

    举个更具体的例子,如图,每一个 都会等于前面weight的输入值。

    Backward pass

     就不像前面Forward pass那么简单,因为 z 后面还要经过很多过程才能得到 C 。

    但是不管那么多,先把  写成 

    由于 z 通过sigmoid函数得到 a,所以 代表 sigmoid函数的微分。

    然后还剩下 这一项怎么算呢?

     使用链式法则可以写成如图所示。

    由于现在不知道网络后面又有怎样的过程,所以有两项是我们现在还不知道的。

    这两项的计算方法等下再讲,现在先假设我们知道这两项的值,这样就能算出  的值,如下

     这个就是  的结果。

     把Backward pass的过程用另一种方式展现出来,如图所示,更能体现Backward pass由后往前的特点。

    其中是一个常数,因为在Forward pass的过程就已经算出 z ,所以在z算出来的情况下,再经过sigmoid函数也仍然是一个固定的值。

    所以在Backward pass由后往前的过程中,在三角形那里,做的运算并不是通过一个非线性函数,而是直接乘上一个常数 。

     

    刚才为了简便,先假设了 这两项未知的值是已知,然后就能算出  。

    下面来具体讲下如何计算那两项的结果。 

    第一种情况:后面接的就已经是Output Layers

    那很直接, 的计算结果就如图所示。

    第二种情况:后面不是Output Layers,还有很多层

    其实原理和前面例子的计算一样。

    z对C的微分,取决于 z 后一层 的 z'对C的微分 和 z''对C的微分。

    所以,如果 z' 和 z'' 后面还有很多层,那就一直往后推下去。直到最后一层,这时计算方法就如刚才的第一种情况那样可以直接算出来。然后再反推回来,知道最后一层就可以求倒数第二层,知道倒数第二层又可以求倒数第三层……

    按刚才的方法来看,感觉挺复杂的。为了算第一层要算后面的每一层直到output layer,再反推回第一层。

    所以为了使计算更有效率,就把刚才的顺序颠倒过来,直接从output layer开始算起,这样就发现每一层都能直接秒算。

    以上图为例子,本来为了算出,需要先算出,……直到最后一层。

    但现在从output layer开始算,只要算出,就能秒算出前面的,立刻变得有效率了。

    总结

    1. 由前往后,做Forward Pass,算出 
    2. 由后往前,做Backward Pass,算出
    3. 两者相乘就是最后的结果 
    展开全文
  • 李宏毅机器学习笔记】1、回归问题(Regression) 【李宏毅机器学习笔记】2、error产生自哪里? ------------------------------------------------------------------------------------------------------ ...

     

    【李宏毅机器学习笔记】1、回归问题(Regression)

    【李宏毅机器学习笔记】2、error产生自哪里?

    【李宏毅机器学习笔记】3、gradient descent

    【李宏毅机器学习笔记】4、Classification

    【李宏毅机器学习笔记】5、Logistic Regression

    【李宏毅机器学习笔记】6、简短介绍Deep Learning

    【李宏毅机器学习笔记】7、反向传播(Backpropagation)

    【李宏毅机器学习笔记】8、Tips for Training DNN

    【李宏毅机器学习笔记】9、Convolutional Neural Network(CNN)

    【李宏毅机器学习笔记】10、Why deep?(待填坑)

    【李宏毅机器学习笔记】11、 Semi-supervised

    【李宏毅机器学习笔记】 12、Unsupervised Learning - Linear Methods

    【李宏毅机器学习笔记】 13、Unsupervised Learning - Word Embedding(待填坑)

    【李宏毅机器学习笔记】 14、Unsupervised Learning - Neighbor Embedding(待填坑)

    【李宏毅机器学习笔记】 15、Unsupervised Learning - Auto-encoder(待填坑)

    【李宏毅机器学习笔记】 16、Unsupervised Learning - Deep Generative Model(待填坑)

    【李宏毅机器学习笔记】 17、迁移学习(Transfer Learning)

    【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)

    【李宏毅机器学习笔记】 19、Structured Learning - Introduction(待填坑)

    【李宏毅机器学习笔记】 20、Structured Learning - Linear Model(待填坑)

    【李宏毅机器学习笔记】 21、Structured Learning - Structured SVM(待填坑)

    【李宏毅机器学习笔记】 22、Structured Learning - Sequence Labeling(待填坑)

    【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)

    【李宏毅机器学习笔记】 24、集成学习(Ensemble)

    ------------------------------------------------------------------------------------------------------

    【李宏毅深度强化学习】视频地址:https://www.bilibili.com/video/av10590361?p=3

    课件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html

    -------------------------------------------------------------------------------------------------------

    Introduction

    在现实中,有很多事情可以应用regression来求解。比如上图的情况。 

    计算神奇宝贝CP值为例子

     具体以一个例子,这个例子是预测神奇宝贝的CP值(战力值)。这里函数的输入就是神奇宝贝进化前的信息,输出就是这只神奇宝贝进化后的CP值。

    为了得到一个能实现以上功能的函数,需要进行以下3步:

    1. 找一个model(function set)
    2. 评估function set里面的function
    3. 挑选出最优的function

    在这个例子中,可以假设这个function长这样,y = b + w\cdot x_{cp}。其中w、b都是参数,代入不同的数字会产生无穷个不同的函数f_1f_2f_3……这些function的集合就是model(function set)。为了找到合适的function(f_3就是错误的,不可能进化后CP值减少),需要通过让模型进行训练才能得到最优的function。

    这里的model是一个linear model,形如y = b +\sum w_ix_i 的也是。x_i称为feature,w_i称为weight,b称为bias。

     为了能让模型有data可以训练,需要抓来一些神奇宝贝。x^i代表不同的神奇宝贝,y^i\hat代表进化后的实际的CP值。

     为了从function set里选出最优的function,需要定义一个Loss function L(f),这个Loss function的输入是function set的某一个function,输出这个function有多差。L(f)输出值越大,说明这个function不好,L(f)输出值越小,说明这个function好,其中,y^i\hat代表真实的CP值,f(x^n_{cp})代表预测出来的CP值,相减后去平方,然后求和(这里假设10只神奇宝贝的data)。

    由于函数 f 中包含参数w,b,所以L(f)也可以表示为L(w,b)

    把Loss function的w,b制成图,每个点代表一个function,如图所示。假设蓝色区域是function比较好的,红色区域是function比较不好的。

     

    定好Loss function后我们可以衡量每个function的好坏,接下来第3步就要找出哪个function是最好的。

     

    在上一步有了Loss function之后,通过Gradient Descent,不断更新参数w、b,最终找到一个loss值相对较低的function。(Gradient Descent会找到一个局部最优的解,虽然可能不是全局最优,但也还行

    刚才讲到gradient descent,这里具体看一下。 为了找到一个比较好的参数,会进行以下的步骤:

    1. 随机初始化一个参数 w_0
    2. 计算w=w_0处对L(w)的偏微分(切线斜率)。如果斜率为负,则增大w的数值。如果斜率为正,则减小w的数值。
    3. 将参数 w_0 减去 \eta 乘上此处的切线斜率,就得出新的参数 w_1。(\eta代表学习率(learning rate),代表参数w每次向左右“跨的步”有多大)

    重复以上步骤。。。。。

    最终会找一个loss值比较小的参数w。这个点可能是local minima而不是global minima,但是也还行。

    上图是两个参数的更新参数过程,和上面一个参数的做法类似。只不过这边是求偏微分。 

    对刚才的过程做一个可视化,蓝色代表loss值较低的区域。红色箭头代表参数更新的过程。

     

     为了实现更低的loss,将刚才的model变得更高次。随着model变得更高次,它能表示的space就越大,所以就越能拟合数据。

    可以看到在training data上,随着model的复杂程度的上升,loss值不断降低。但在testing data上是否也如此?

    可以看到,当model复杂到一定程度后,在testing data 的loss值反而变得很高。这种在training data上loss值很低,在testing data上loss值很高的情况叫做过拟合(overfitting)。所以还是根据实际问题需要,选择合适的model。

     

    为了实现更低的loss值,可以做以下两个步骤:

     

    1、重新设计model

    这里收集了更多神奇宝贝的资料,可以看出CP值的变化和神奇宝贝对应的物种是有关系的。所以需要对上面的model重新修改下。

    通过类似 if 的做法去判断物种,然后不同物种的神奇宝贝有不同的function去计算进化后的CP值。

    为了使model还是一个linear model,需要将上面的做法改为以下式子:

    通过 \delta 来实现刚才 if 的功能。比如当 x_s=Pidgey 的时候, \delta(x_s=Pidgey) 就输出1。下面\delta(x_s=Weedle)等等都变成0,所以实现只调这种物种的参数并且仍然是linear model。

    2、Regularization

     给Loss function加上一项regularization,\lambda \sum (w_i)^2,我们会希望这一项越小越好,即最终的参数 w_i 越小越好。

    参数 w_i 越小代表function越平滑(smoother),这样做的好处就是使得函数的输出对于输入的不同data不会太敏感,所以一些noisy的干扰就不会产生太大的影响。

    这里可能会有人想,bias需不需要regularization?答案是不用,因为bias和输入的 x 关系不大。

     现在的Loss值有两项,一项是和error的大小有关,一项是和function的光滑程度有关。\lambda的值越大,则说明更偏向于考虑function的光滑。

    从上面的实验结果,可以看出\lambda的值太大的话,会导致function不怎么考虑error的值,所以并不是function越光滑越好。因为当function过于光滑,会导致不管输入是什么,都得到差不多的输出值,这肯定是不对的。

    展开全文
  • 机器学习介绍(李宏毅机器学习笔记(LeeML-Notes))) ##机器学习介绍 这门课,我们预期可以学到什么呢?我想多数同学的心理预期就是你可以学到一个很潮的人工智慧。我们知道,从今年开始,人工智慧这个词突然变得...

    在这里插入图片描述
    这门课,我们预期可以学到什么呢?我想多数同学的心理预期就是你可以学到一个很潮的人工智慧。我们知道,从今年开始,人工智慧这个词突然变得非常非常非常的热门,讲大家、政府通都在讲人工智慧这个词。

    但人工智慧是什么呢?人工智慧其实一点都不是新的词,人工智慧这个词、AI这个词、Artificial Intelligence这个词,在1950年代就有了。那这个词意味着什么呢?这个词意味着一个人类长久以来的目标,希望机器可以跟人一样的聪明,那在科幻小说里面,我们看要很多这样的幻想和期待。但很长段时间里面,人们并不知道怎么做到人工智慧这件事情,直到后来,大概1980年代以后,有了机器学习的方法。那么机器学习顾名思义,从名字就可以被猜出,就是让机器具有学习的能力。所以机器学习跟人工智慧,他们之间什么关系呢?

    人工智慧是我们想要达成的目标,而机器学习是想要达成目标的手段,希望机器通过学习方式,他跟人一样聪明。而深度学习和机器学习有什么关系呢?深度学习就是机器学习的其中一种方法。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U5mgqpxv-1570283963449)(res/chapter1-0.png)]

    在有深度学习、机器学习之前,人们用什么样的方式来做到人工智慧这件事呢?我记得高中生物学告诉我们说,生物的行为取决于两件事,一个是后天学习的结果,不是后天学习的结果,就是先天的本能。对于机器来说也是一样,他怎么样表现的有智慧,要么就是通过后天学习的手段表现的很有智慧,要么就是他的先天的本能。机器为什么会有先天的本能,那可能就是他的创造者,其实都是人类,帮他事先设立好的。

    那么先来看一下生物的本能,讲一个跟机器学习一点都没有关系的,生物的本能。这个是河狸,那河狸的特色呢,就是他会筑水坝把水挡起来。但是河狸怎么知道要筑水坝呢?河狸筑水坝能力是天生的。也就是说,假设河狸他在实验室出生,他没有父母叫他怎么筑水坝。但是他一生下来,他心里就有个冲动,就是他想要筑水坝。那如果我们要程序语言来描述他的话,他那的程序语言就是这样的:

    If 他听到流水声

    Then 他就筑水坝直到他听不到流水声。

    所以呢,生物学家就可以欺负河狸,他就用一个扬声器来播放流水声啊,如果他把扬声器流放在水泥墙里面,然后河狸就会在水泥墙上面的放很多的树枝,在水泥墙上面筑堤,想把扬声器的声音盖住。如果你把扬声器放在地上,河狸就会用树枝把他盖住直到你听不见扬声器的声音为止。这就是生物的本能,那机器的本能跟生物的本能其实也很像。

    在这里插入图片描述
    假设有一天,你想要作一个chat-bot、如果你不是用机器学习的方式,而是给他天生的本能的话,那像是什么样子呢?你可能就会在这个chat-bot里面,在这个聊天机器人里面的设定一些规则。这些规则我们通常称hand-crafted rules,叫做人设定的规则。那假设你今天要设计一个机器人,他可以帮你打开或关掉音乐的话,那你的做法可能是这样,设立一条规则,就是写方程式,如果输入的句子里面看到turn off这个词汇,那chat-bot要做的事情呢,就是把音乐关掉。这个时候呢,你之后对chat-bot说,please turn off the music 或can you turn off the music, please? 他就会帮你把音乐关掉。看起来好像很聪明。人家就会觉得果然这就是人工智慧。但是如果你今天想要欺负chat-bot的话,你就可以说please don‘t turn off the music,但是他还是会把音乐关掉。这是个真实的例子,你可以看看你身边有没有这种类似的chat-bot,然后你去真的对他说这种故意欺负他的话,他其实是会答错的。这是真实的例子,但是不告诉他是哪家公司产品,这家公司也是号称他们做很多AI的东西的。不要让你发现是哪家产品免得被告。

    用hand-crafted rules有什么样的坏处呢,他的坏处就是,你没办法,考虑到所有的可能性,他非常的僵化,而用hand-crafted rules创造出来的machine,他永远没有办法超过创造他的人类。人类想不到东西,就没办法写规则,没有写规则,机器就不知道要怎么办。所以如果一个机器,他只能够按照人类所设定好的hand-crafted rules,他就他这个行为都是被规定的,都没有办法freestyle。如果是这样的话,他就没有办法超越创造他的人类。

    那你可能会说,但是你好像看到很多chat-bot看起来非常的聪明,这些chat-bot,如果你是有个是一个非常大的企业,他给以派给成千上万的工程师,他用血汗的方式来建出数以万计的规则,然后让他的机器看起来好像很聪明。但是对于中小企业来说,这样建规则的方式反而是不利的。所以我认为机器学习发展,对比较小规模企业反而是更有利的,因为接下,不需要非常大量的人来帮你想各式各样的规则。只要手上有data,你可以机器来帮你做这件事情,当然怎么收集data又是另外一个问题。

    这不是我们今天要讨论的主题,那我知道说,因为AI这个词现在非常非常非常非常的热门,所以会有各式各样,奇奇怪怪的东西,我觉得现在非常经常碰到的一个问题,也许可用以下这个漫画来说明,这是个四格漫画,而这个漫画并不是随随便便的一个四格漫画。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-agapL3PM-1570283963452)(res/chapter1-3.png)]

    这个漫画是facebook上的漫画,这个漫画说的是,现在你一定常常新闻或者是商场上看到这个讯息,有一个seller说看看我们最新的人工智慧机器人,他就是非常的人工智慧。这个系统搭配一个能言善道seller,加上一个非常非常潮的前端和外壳,里面是什么没有人知道,外面的观众就问说,他是用什么neural做的?反正就是最好的AI的技术。但是你把他剖来看一看,里面通通都是if掉出来。现在我政府,企业都说想要推广的AI,可是他们想要推广AI其实是这种AI。那这个其实都不是我们现在应该做的事,如果你要推动,如果你要推广的是这种hand craft AI的话,你怎么五十年前不推广,一直到今天才出来做呢?今天,我们要走的不是目前这个路线,如果是这个路线他应该是要被diss,那我们要做的其实是让机器他有自己学习的能力。也就我们要做的应该machine learning的方向。讲的比较拟人化一点,所谓machine learning的方向,非常拟人化的想法,你就写个方程式,然后让机器人变得了很聪明,他就能够有学习的能力,接下来呢,你就像教一个婴儿、教一个小孩一样的教他。你并不是写方程式让他做到这件事,你就写方程式让他具有学习的能力,然后接下来呢,你就可以用像教小孩的方式,教他告诉他说。假设你要叫他学会做语音辨识,你就告诉他这段声音就是Hi,这段声音就是How are you,有这段声音就是Good bye,希望接下他就学会了。你给他一个新的声音,他就可以帮你产生语音辨识的结果。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HTmh6Czx-1570283963453)(res/chapter1-4.png)]

    或者是如果你希望他学会怎么做影像辨识的话,那你可能不太需要改太多的方程式。因为他本身就有这种学习的能力,你只是需要交换,就告诉他说,我看到这张图片,你要说这是猴子;看到这张图片,然后说是猫;看到这张图片,可以说是狗。他是要具有影像辨识的能力,接下来看到他没有看过猫,希望他可以认识。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-74Xxqa3t-1570283963453)(res/chapter1-5.png)]

    这是比较拟人化的说法,如果讲的更务实一点的话呢,machine learning做的事情,你可以想成就是在寻找一个function,要让机器具有一个能力,这种能力是根据你提供给他的资料,他去寻找出我们要寻找的function。还有很多关键问题都可以想成是我们就是需要一个function。举例来说,语音辨识,在语音辨识这个问题里面,我们要找一个function,他的输入声音讯号,他的输出是语音辨识的文字。这个function非常非常的复杂,有人会想说我来用一些写规则的方式,读很多语言学文献,然后写一个规则,然后做语音辨识。这件事情,60年代就有人做,但到现在都还没有做出来。语音辨识太过复杂,这个function太过的复杂,不是人类所可以写出来,可以想象的,所以我们需要凭借的机器的力量,帮我们把这个function找出来。那或者说,假设你要做影像辨识,那就是找一个function,输入一张图片,然后输出图片里面有什么样的东西。或者是大家都一直在说的Alpha GO,如果你要做一个可以下围棋machine,其实你需要的也就是找一个function,这个function,输入围棋上19*19的棋盘。告诉机器棋盘上,哪些位置有黑子,哪些位置有白子。然后机器就会告诉你,接下来下一步应该落子在哪。或者是你要做一个聊天机器人,那你需要的是一个function,这个function的输入,就是使用者的input,他的输出,就是机器的回应。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QELRsGKk-1570283963453)(res/chapter1-6.png)]

    那以下我们先很简短的跟大家说明,怎么样找出这个function,找出function的framework是什么呢?我们以影像辨识为例。我们找个function输入一张图片,他告诉我们,图片里面有什么样的东西。在做这件事,他的起手事是你要先准备一个function的set。这个function里面有成千上万的function举例来说,这个function在里面,有一个f1,你给他看一只猫,他就告诉你输出猫,看一只狗就输出狗。有一个function f2他很怪,你给他看猫他说是猴子,给他看狗,他说是蛇。那你要准备一个function set,这个function set里面有成千上万的function。那这件事情讲讲有点抽象啊,你可能很怀疑说有成千上万的function,我怎么把成千上万的function收集起来,变成一个function的池呢,这个我们之后会再讲。**总之呢,我们先假设你手上有一个function set,这个function set就叫做model。有了这个function set,接下来第二步,继续要做的事情是他有一些训练的资料,这些训练资料告诉机器说一个好的function,它的输入输出应该长什么样子,有什么样关系。**你告诉机器说呢,现在在这个影像辨识的问题里面,如果看到这个猴子,看到这个猴子图也要输出猴子,看到这个猫的图也要输出猴子猫,看到这个狗的图,就要输出猴子猫狗,这样才是对。只有增加训练资料,你拿出一个function,机器就可以判断说,这个function是好的,还是不好的。机器可以判断一个function,根据训练资料判断一个function是好的,还是不好的。举例来说,**在这个例子里面,显然f1,他比较符合training data的叙述,比较符合我们的知识。所以f1看起来是比较好的。F2,就看起来是一个荒谬的function。**我们今天讲的这个task叫做supervise learning。如果你告诉机器input和output这就叫做supervise learning,之后我们也会讲到其他不同的学习场景。**现在机器有办法决定一个function的好坏。但光能够决定一个function的好坏是不够的,因为在你的function的set里面,他有成千上万的function,他又会无穷无尽的function,所以我们需要一个有效率的演算法,有效率的演算法可以从function的set里面挑出最好的function。**一个一个衡量function的好坏太花时间,实际上做不到。所以我们需要有一个好的算法,从function set里面挑出一个最好的。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WAgDLW96-1570283963453)(res/chapter1-7.png)]

    便是输入一张在机器没有看过的猫,然后希输出的也是猫,希望机器有举一反三的能力。左边这个部分叫training,就是学习的过程,右边这个部分叫做testing,学好以后,你就可以拿它做应用。所以在整个machine learning framework整个过程分成了三个。

    **第一个步骤就是找一个function,定出一个function set,第二个步骤让machine可以衡量一个function是好还是不好,第三个步骤是让machine有一个自动的方法,有一个好演算法可以挑出最好的function。**所以机器学习到这边,我们就说完了。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JNTWIK5v-1570283963454)(res/chapter1-8.png)]

    简化整个机器学习只有三个步骤,类比,如果我们把大象塞进冰箱,其实也是三个步骤。大家知道吗,就是你怎么把大象塞进冰箱,就是把门打开,把大象塞进去,然后把门关起来,然后就结束了。所以说,机器学习三个步骤,就好像是说把大象放进冰箱,也只需要三个步骤,意思是一样的好。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nkXq0UtT-1570283963454)(res/chapter1-9.png)]

    机器学习相关的技术

    监督学习

    (1)regression
    那接下来的时间,我们要讲一下,在这门课里面,你可以学到哪些和machine learning相关的技术。这个是这学期的learning map,然后看起来是有点复杂的,我们一块一块来解释。

    我们先从这个图的左上角开始,这个图的左上角,是regression。Regression是一种machine learning的task,当我们说,我们要做regression的时候,一直是说我们今天要machine找的function,他的输出是一个scalar,是一个数值,这个叫做regression。举例来说,在作业一里面,我们会要你做pm2.5的预测 ,也就是说你要找一个function,这个function的输出呢,就是未来某一个时间pm2.5的一个数值,这个是一个regression的问题。那机器要判断说,这个function要输出,说明天上午的pm2.5,你要给他一些资讯,他才能够猜出来嘛,那你给他资讯,可能是今天上的pm2.5,昨天上午的pm2.5等等,这就是一个function,他吃的是我们给他的过去的资料,他输出的是预测未来的pm2.5。那你要训练这种machine,如同我们刚才讲的,你要准备一些训练资料,什么样的训练资料?你就告诉他说,今天根据我们过去的从政府的open data上搜集下来的资料,九月一号上午的pm2.5是这个样子,九月二号,九月三号是这个样。所以一个好的function输入,这样子的pm2.5,他应该输出这样的pm2.5。给他九月十二号、九月十三号的pm2.5,他应该输出九月十四号的pm2.5。你收集到许多的data,你就可以做一个气象预报的系统。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QRYdXSQu-1570283963455)(res/chapter1-10.png)]

    (2)classification
    那接下来讲的是classification,分类的问题。那这regression和classification的差别就是我们要机器输出的东西的类型是不一样。在为regression里面机器输出的是一个数值,在classification里面机器输出的是分类。假设classification问题,分成两种,一种叫做二分类,输出的是是或否。另一类叫做多分类,等于是让机器做一个选择题,等于是给他数个选项,每个选项都是一个类别,让他从数个类别里选择正确的类别。

    举例来说,二分类里面鉴别垃圾邮件,将其放到垃圾箱。那怎么做到呢?就是将function输入一个邮件,输出邮件是垃圾邮件,还是不是垃圾邮件。你要训练这样的function很简单,就给他一大堆的data告诉他说,现在输入这封邮件,你应该说是垃圾邮件,输入这封邮件,他应该说它不是垃圾邮件。你给他够多的这种资料去学,它就可以自动找出一个可以政策垃圾邮件的function。,

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YuLGMf12-1570283963455)(res/chapter1-11.png)]

    多分类的举一个文章分类的例子,现在网络上有非常非非常多的新闻,也许没有人会把所有的新闻看完,很希望机器自动帮一把新闻做分类。怎么做?你需要的是一个function,你输出的那个类别,就是哪个选项。政治、经济、体育都是不同的选项。你要做的事情就是解这个选择题啊。收集资料训练后发现,这篇文章叫做政治。然后给他新的文章,希望他就可以给你正确的结果。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hS5liOmm-1570283963455)(res/chapter1-12.png)]

    那刚选择不同的function set 你会得到不同的结果。选不同的function set就是选不同的model。Model有很多种,举例来说,最简单的就是线性的模型,我们会花很多时间线性的模型上。在非线性的模型中最耳熟能详的就是deep learning。在做deep learning时,他的function是特别复杂的,所以他可以做特别复杂的事情。举例他可以做影像辨识,也可以用deep learning的技术下围棋。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MNR7K8iO-1570283963456)(res/chapter1-13.png)]

    下围棋这个task 其实就是一个分类的问题。对分类问题我们需要一个很复杂的function。输入是一个棋盘的格子,输出就是下一步应该落子的位置。那我们知道,一个棋盘上就是有十九乘十九的位置可以落子,所以今天下围棋这件事情,你就可以把它想成是一个十九乘十九个类别的分类问题,或者是你可以把它想成是一个有十九乘十九个选项的选择题。那你要怎么训练机器?让他学会下围棋呢?你要搜集训练资料,告诉机器现在这个function输入输出分别应该是什么。就看到某样的盘式,我们应该输出什么样结果。那怎么收集资料呢?你可以从人类过去下的棋库里面搜集。举例来说,你收集了进藤光和社新春下的那一盘棋的棋谱。社新春出手先下5之五,进藤光次手下天元,三手社新春下五之5。所以现在如果有人下5之五,就输出天元;如果有人下5之五然后下天元,就输出五之5。然后你给他足够多的棋谱,他就会下围棋了。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BreT16xn-1570283963456)(res/chapter1-14.png)]

    除了deep learning 以外还有很多machine learning的model,也是非线性的模型,这学期会请吴佩云老师来帮我们讲SVM。

    半监督学习

    好,那刚才我们讲的都是监督学习,监督学习的问题是我们需要大量的training data。training data告诉我们要找的function的input和output之间的关系。那这个output的我们常叫做label,做机器学习要大量的label。就是说,如果我们用的监督学习,我们需要告诉机器function的input和output是什么。这个output往往没有办法用很自然的方式取得,需要人工的力量把它标注出来。这些function的output叫做label。那有没有办法减少label需要的量呢?是有办法的,就是半监督学习。意思是说,举例来说,假设你先想让机器鉴别猫狗的不同。你想做一个分类器,让他告诉你,图片上是猫还是狗。-你有少量的猫和狗的data,但是同时你又有大量的猫和狗的图片,但是你没有力气去告诉机器说哪些是猫哪些是狗。那在半监督学习的技术里面,这些没有label的data,他可能也是对学习有帮助。这个我们之后会讲为什么这些没有label的data对学习会有帮助。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYqeHhCW-1570283963456)(res/chapter1-15.png)]

    迁移学习

    那另外一个减少data用量的方向是迁移学习。迁移学习的意思是,假设一样,我们要做猫和狗的分类问题,我们也一样,只有少量的有label的data。但是我们现在有大量的data,可能有label也可能没有label。但是他跟我们现在要考虑的问题是没有什么特别的关系的,我们要分辨的是猫和狗的不同。但是这边有一大堆其他动物的图片还是动画图片,这个是凉宫春日啊,这个是御坂美琴,你有这一大堆不相干的图片,他到底可以带来什么帮助。那这个就是迁移学习要讲的问题。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EnAEP6RA-1570283963457)(res/chapter1-16.png)]

    无监督学习

    更加进阶的就是无监督学习,我们这希望机器学到无师自通,如果在完全没有任何label的情况下,到底机器可以学到什么样的事情。举例来说,如果我们给机器看大量的文章,在去网络上收集站文章很容易,网络上随便爬,让机器看过大量的文章以后,他到底可以学到事情。他能不能够学会每一个词汇的意思,那要让机器学会每一个词汇的意思,你可以想成是我们找一个function,然后你把一个词汇丢进去。比如说你把apple丢进这个function里面,机器要输出告诉你说,这个词会是什么意思。也许他用一个向量来表示这个词汇的各种不同的特性不同的attribute。但现在讲是无监督学习的问题,你现在只有一大堆的文章,也就是说,你只有词汇,你只有function的输入,没有任何的输出。那你到底要怎么解决这个问题。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hiFeVvph-1570283963457)(res/chapter1-17.png)]

    或者是我们举另外一个无监督学习的例子,假设我们今天带机器去动物园,让他看一大堆的动物,他能不能够在看了一大堆动物以后,他就学会自己创造一些动物。那这个都是真实例子。仔细看了大量的动物以后,他就可以自己的画一些狗出来。有眼睛长在身上的狗、还有乳牛狗。这个task也是一个无监督学习的问题。这个function的输入不知道是什么,只有输出但是没有输入,这问题在之后也会具体讲述。

    监督学习中的结构化学习

    接下来还有一类比较少提及的就是structured learning。structured learning 中机器输出的是有结构性的结构。举例来说,在语音辨识里面,机器输入是声音讯号,输出是一个句子,句子是要很多词汇拼凑完成。他是一个有结构性的object。或者是说在机器翻译里面你说一句话,你输入中文希望机器翻成英文,他的输出就也是有结构性的。或者是说你今天要做的,是人脸辨识,来给机器拍张图片还有知道说呢,最左边是长门,中间是凉宫春日,右边是另一个人。然后机器要把这些东西标出来,这也是一个structure learning问题。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ia8dQHpK-1570283963457)(res/chapter1-18.png)]

    其实多数人可能都听过regression,也听过classification,你可能不见得听过structure learning。很多教科书都直接说,machine learning是两大类的问题,regression,和classification。其实还应该包括structure learning,这里面还有很多问题是没有探究的。

    最后一部分就是reinforcement learning,reinforcement learning其实是一个已经发展了很久的技术,但近期受到大家的关注是因为data mining将reinforcement learning技术用来玩一些小游戏。另外一个就是Alpha Go。

    强化学习

    我们将他和监督学习进行比较,在监督学习中我们会告诉机器正确答案是什么。举例说,你要用监督学习的方法来训练一个聊天机器人,那你的训练方式是,你就告诉机器,现在使用者说了hello,你就说hi。现在使用者说了byebye ,你就说good bye。所以机器有一个人,当他家教在他旁边手把手的教他每件事情,这就是监督学习。reinforcement learning是什么呢?在reinforcement learning里面,我们没有告诉机器正确的答案是什么,机器所拥有的只有一个分数,就是他做的好,还是不好。举例来说我们现在要用reinforcement learning方法来训练一个聊天机器人的话,他训练的方法会是这样:你就把机器发到线下,让他的和面进来的客人对话,然后想了半天以后呢,最后仍旧勃然大怒,就把电话挂掉了。那机器就学到一件事情,就是刚才做错了。但是他不知道哪边错了,他就要回去自己想道理,是一开始就不应该打招呼吗?还是中间不应该在骂脏话了之类。他不知道,也没有人告诉他哪里做的不好。他要回去反省检讨哪一步做的不好。机器要在reinforcement learning的情况下学习,机器是intelligence的。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9PmfXHk1-1570283963458)(res/chapter1-19.png)]

    在监督学习中是有老师的,老师会告诉他每个问题的答案。那reinforcement learning 是learning from critics,他是从评价中去学习的。他只知道他做的好,或者不好。但是他不知道他哪里做得好,还不知道哪做的不好。reinforcement learning受到重视,就是他比较符合我们人类真正的学习的情景。这是你在学校里面的学习老师会告诉你答案,但在真实社会中没人回告诉你正确答案。你只知道你做得好还是做得不好,如果机器可以做到reinforcement learning,那确实是比较intelligence。那或者是我们用Alpha Go当做例子,对于监督学习就是说,你看到一个下棋的情况,就应该下哪里。对于reinforcement learning就是,机器会不断的下棋,最后赢了,机器就会知道下的不错,但是究竟是哪里可以使他赢,他其实是不知道的。我们知道Alpha Go其实是用监督学习和reinforcement learning去学习的。先用棋谱做监督学习,然后在做reinforcement learning,但是reinforcement learning需要一个对手,如果使用人当对手就会很让费时间,所以我们采用另一个机器当他的对手。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a5BYhP6f-1570283963458)(res/chapter1-20.png)]

    小贴士

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pQnpU1Vu-1570283963458)(res/chapter1-21.png)]

    大家注意一下这个不同的方块,我是用不同的颜色来表示。同样的颜色代表,不同的方块是同一个类型的。这边的蓝色的方块,指的是学习的情景,通常学习的情景是你没有办法控制的。比如,因为我们没有data做监督学习,所以我们才做reinforcement learning。现在因为Alpha Go比较火,所以Alpha Go中用到的reinforcement learning会被认为比较潮。所以说有学生去面试,说明自己是做监督学习的,就会被质疑为什么不做reinforcement learning。那这个时候你就应该和他说,如果我今天可以监督学习,其实就不应该做reinforcement learning。reinforcement learning就是我们没有办法做监督学习的时候,我们才做reinforcement learning。红色的是指你的task,你要解的问题,你要解的这个问题随着你用的方程的不同,有regression,有classification,有structured。所以在不同的情境下,都有可能要解这个task。最后,在这些不同task里面有不同的model,用绿色的方块表示。

    展开全文
  • 李宏毅机器学习笔记】1、回归问题(Regression) 【李宏毅机器学习笔记】2、error产生自哪里? 【李宏毅机器学习笔记】3、gradient descent 【李宏毅机器学习笔记】4、Classification 【李宏毅机器学习笔记】5...

    【李宏毅机器学习笔记】1、回归问题(Regression)

    【李宏毅机器学习笔记】2、error产生自哪里?

    【李宏毅机器学习笔记】3、gradient descent

    【李宏毅机器学习笔记】4、Classification

    【李宏毅机器学习笔记】5、Logistic Regression

    【李宏毅机器学习笔记】6、简短介绍Deep Learning

    【李宏毅机器学习笔记】7、反向传播(Backpropagation)

    【李宏毅机器学习笔记】8、Tips for Training DNN

    【李宏毅机器学习笔记】9、Convolutional Neural Network(CNN)

    【李宏毅机器学习笔记】10、Why deep?(待填坑)

    【李宏毅机器学习笔记】11、 Semi-supervised

    【李宏毅机器学习笔记】 12、Unsupervised Learning - Linear Methods

    【李宏毅机器学习笔记】 13、Unsupervised Learning - Word Embedding(待填坑)

    【李宏毅机器学习笔记】 14、Unsupervised Learning - Neighbor Embedding(待填坑)

    【李宏毅机器学习笔记】 15、Unsupervised Learning - Auto-encoder(待填坑)

    【李宏毅机器学习笔记】 16、Unsupervised Learning - Deep Generative Model(待填坑)

    【李宏毅机器学习笔记】 17、迁移学习(Transfer Learning)

    【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)

    【李宏毅机器学习笔记】 19、Structured Learning - Introduction(待填坑)

    【李宏毅机器学习笔记】 20、Structured Learning - Linear Model(待填坑)

    【李宏毅机器学习笔记】 21、Structured Learning - Structured SVM(待填坑)

    【李宏毅机器学习笔记】 22、Structured Learning - Sequence Labeling(待填坑)

    【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)

    【李宏毅机器学习笔记】 24、集成学习(Ensemble)

    ------------------------------------------------------------------------------------------------------

    【李宏毅深度强化学习】视频地址:https://www.bilibili.com/video/av10590361?p=30

    课件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html

    -------------------------------------------------------------------------------------------------------

    Transfer Learning

    在训练中,训练数据不一定要和任务的种类是相同的。如上图,虽然是训练猫狗的分类器,但是也可以使用大象老虎的照片或者是卡通的猫和狗作为一部分训练数据。

    之所以需要迁移学习是因为,在现实中,符合要求的图片相对较少。如上图,如果要分析一张医学方面的图片,但是相关的数据很少,这时可以给训练数据加进去一些猫狗等其它的图片。 

    Overview

    source data指和任务比较不相关的data,而target data就是和任务相关的data。

    拥有的数据种类不同,要的方法也不同。

    source data有label,target data有label

    Model Fine-tuning

     如果我们的target data 和source data都是有label的,那这时可以使用Model Fine-tuning

    做法是:

    1. 用source data作为训练数据,去训练模型。
    2. 将第一步训练而出的模型的参数作为此时的初始值,改成用target data去训练模型。

    专业词汇:One-shot learning,指这种只有很少的target data的训练。

    这个方法很简单,但是要注意,如果target data的数据非常少,需要加一些技巧(Conservative Training、Layer Transfer)来防止模型发生过拟合。

    Conservative Training

    如果target data很少,为了防止使用target data训练时发生过拟合,可以在训练时加一些限制(比如加一些像L1、L2之类的正则项),让两边产生的模型不要相差太远。

    Layer Transfer

    另一个防止使用target data训练时发生过拟合的方法,是 Layer Transfer 。

    1. 用source data训练出一个neural network后,把其中的一些layer的参数(黄色的箭头)复制到右边去训练。
    2. 用target data来调剩下的layer(橙色的箭头)

    这样使用target data的训练过程就只调了部分的参数,减少了发生过拟合的风险。

    当然,如果target data足够多的话,还是可以在用source data训练出模型后,用target data去微调整个模型的参数。

    现在有一个问题,我们要决定那些layer应该是copy的呢?

    • 语音辨识:通常保留后几层layer,因为靠近input的layer,会受不同人的声音信号所影响。而越到后面,和人的发音方法越不相关,所以可以保留。
    • 图像辨识:通常保留前几层layer,因为靠近input的layer,只是识别一些简单的特征(直线、斜线等),所以不同的任务在前几层做的事情都差不多。

    Layer Transfer 在 Image上的效果

    X轴代表复制多少layer,Y轴代表准确度。下面数字代表上图不同的线 

    1. 没做Layer Transfer
    2.  (和Layer Transfer无关的实验)使用target data先训练,然后固定住前几层(多少层对应X轴)的参数。然后继续用target data去调整后面剩下的layer。可以看到固定越多层,效果越差。因为不同的layer是有互相协调的。
    3. (和Layer Transfer无关的实验)使用target data先训练,然后固定住前几层(多少层对应X轴)的参数。然后继续用target data去fine-tune整个模型。
    4. 做了Layer Transfer的结果。复制越多层,效果慢慢变差。

    Multitask Learning

     Multitask Learning能让机器学会多个任务。Multitask Learning很适合用neural network 来做。

    上图左边,在network的前几层共用layer,到了后面要细分任务的时候再分为多个layer。

    如果两个任务只有中间比较像,那就可以用上图右边的做法。

      Multitask Learning一个很成功的的应用就是 多语言的语音辨识。

    虽然是不同语言,但是声音的信号都差不多,所以前面的layer可以共用。到了细分语言再拆成多个layer。

    上图是一个普通话(mandarin)的识别。 X轴是普通话的数据的时长,Y轴是错误率。

    可以看到,虽然欧洲语言和普通话好像一点都不像。但是把欧洲语言和普通话一起做  Multitask Learning,让欧洲语言去帮忙调整前几层layer的参数,可以看到训练出来的结果会比只有普通话作为训练数据要好。

    从图中横线的位置可以看出,Multitask Learning 达到和 Mandarin only 相同的错误率,Multitask Learning使用的训练数据明显更少。

    Progressive Neural Networks

    这个方法是这样:

    1. 先训练一个network解决task 1 。
    2. 固定住task 1 的network的参数,把task 1的network 的layer复制到task 2 的network中。

    好处:即便在训练task 2时,也不会影响原来task 1的model的参数。同时,如果task 1的参数不适用于task 2,也会在训练时被慢慢调整好,不会对task 2造成影响。

     

    source data有label,target data没label

    Domain-adversarial training

    这里source data是有label,而target data没有label。

    以手写数字识别为例,source data是MNIST数据集,而target data是MNIST-M。

    这时可以把source data看做training data,而target data看做testing data。但是这里有一个问题是,这两者的特征不是很像

    如上图,把model前几层提取的特征显示出来,可以看到source data和target data的特征是很不一样的(图中的红色和蓝色点有明显的分界线)。所以如果用source data去learn一个model后,直接以target data作为input去预测,结果肯定是很差的。

     所以我们要使得source data和target data输入model后,经过feature extractor后,所得到的特征是比较像的,即如上图是“混在一起”的。

    所以这里将feature extractor的output接到一个domain classifier。domain classifier是分类source data和target data的特征,所以最好的情况是feature extrator的output,能使的domain classifier的准确率达到最低(即代表source data和target data的特征没被区分开)。

    但这里有个漏洞,如果要使domain classifier的准确率很低,那feature extractor可以不管input是什么,都output 同一个数值。这明显是不对的,所以还要加一个限制。如下。

     在刚才的基础上,再加一个label predictor。所以现在feature extractor不仅要能最小化domain classifier的准确度,还要最大化分类的准确率。

    实做时用gradient descent,然后在做反向传播的时候,如果domain classifier要更新的参数是 ,那传递回feature extractor的时候,就把这个参数更新量颠倒,就能使feature extractor往domain classifier 准确度下降的方向去更新。

    上图是使用有无Domain-adversarial training的对比结果。

    Zero-shot Learning

    在刚才 Domain-adversarial training 的例子中,source data和target data比较不像。

    但在 Zero-shot Learning 里,source data和target data是两种不同task。如上图,source data是分类猫狗的data,而target data则是分类羊驼的任务。这时可以有两个方法可以做:Representing each class by its attribute、Attribute embedding。

    Representing each class by its attribute

    既然使用target data没办法直接预测图中的物体是什么,那就换一种角度。 

    1. 让neural network去预测图中物体有哪些特征(例如毛茸茸,4条腿,有尾巴等)。
    2. 知道图中物体有哪些特征之后,查数据库(这个是人工建立的),看拥有此特征对应哪种物体

    Attribute embedding

    步骤如下: 

    1. 把所有类别各自的描述(attribute,也可以理解为特征)先定义好。(这一步需要人工来定义,也可能能用机器自动去定义)
    2. 把image x^1和它的描述 y^1,分别通过 f 和 g 两个NN,映射到embedding space上。要训练模型使得这两个output越接近越好。
    3. 把unlabel 的 x^3 通过 f 映射到embedding space上(上图写错了,是f(x^3)),看得出它和 y^3 的描述(attribute)的映射比较接近,所以判定 x^3 属于羊驼。(这个例子虽然训练集没有羊驼的图像数据,但是有羊驼的描述,这个描述是人工事先定义的,或者可能机器也可以定义)

    前面说过要使 f 和 g 的 output 尽可能接近,但如果用上图第一行的公式去训练会有问题(如果 f 和 g 不管input是什么,output都一样,这样它们的距离就一直是0),所以要用第二行公式的做法。

    这个公式的最好情况是 0 ,即max()的第二项(也叫zero loss)要小于0。

    zero loss整理一下,可以看出,就是两项内积相减要大于k(k代表margin,是人工设置的)。

    f 和 g 的内积在几何上可以想象成投影。现在看zero loss的两项。

    • 第一项:如果f 和 g 的偏差较小,f 和 g 的内积就会相对较大。
    • 第二项: 和其他除了n的  的内积。

    所以如果 x^n 和 y^n 是匹配的,那么第一项的内积肯定会大于第二项的内积,如果两者内积的差大于k,则判定loss为0 。

     

    刚才讲的是需要image和对应class的描述(attribute)。 而如果根本不知道每一个动物的attribute是什么怎么办?这时可以用Attribute embedding + word embedding。

    Attribute embedding + word embedding

    这里需要引进word vector。word vector的每一维代表这个word的某一种attribute。

    现在直接把动物的名字所对应的word vector来代替每一种动物的attribute。其他步骤和刚才Attribute embedding一样。

    Convex Combination of Semantic Embedding

    这个方法的好处是不用训练。

    步骤如下:

    1. 把image输入到一个NN(随便找个现成的NN就行),NN输出这张图片属于不同种类的几率。比如上图属于狮子和老虎的几率都是0.5 。
    2. 去找lion和tiger的word vector,把它们按各自0.5融合,得到图中黑色的点。
    3. 去找其他word vector看哪个点和这个黑色点距离比较近。如上图liger的word vector和这个黑色点比较近,就说明 image 的物体属于这个liger 。

     Example of Zero-shot Learning

     上面两张图是Zero-shot Learning应用在翻译的例子。这个例子的training data除了日转韩,其它都有。所以使用Zero-shot Learning后就能实现日转韩的翻译。

    它的步骤大概可以理解为:

    1. 输入的英语日语韩语到机器中。
    2. 机器将data投射到另一个space上(转换为另一种机器自己看得懂的语言)。不同语言但是同一个意思的词在这个space上的位置都差不多。
    3. 最终输出翻译的时候就把这个space上的点转换为人类看得懂的语言。

    More about Zero-shot learning

    这边是更多关于 Zero-shot learning 的论文。

    source data有label,target data没label

    Self-taught learning

    这个方法步骤如下:

    1. 从source data里去learn 一个性能更好的feature extractor 
    2. 用这个性能更好的feature extractor去target data上提取feature。

     

    source data没label,target data没label

    Self-taught Clustering

    这边没讲。。可以看图中的论文去了解。

    展开全文
  • 李宏毅机器学习笔记】1、回归问题(Regression) 【李宏毅机器学习笔记】2、error产生自哪里? 【李宏毅机器学习笔记】3、gradient descent 【李宏毅机器学习笔记】4、Classification -----------------------...
  • 一、机器学习的本质就是自动寻找函式 例如 二、寻找什么样子得到函数式 1.regression(回归): The output of the function is a scalar.:函数的输出是一个数值 例如: 2.classfication(分类): 1)Binary ...
  • [机器学习入门] 李宏毅机器学习笔记-11(Convolutional Neural Network;卷积神经网络) PDF VIDEOWhy CNN for Image? CNN 经常作用于图像识别。 Some patterns are much smaller than the whole imageThe same ...
  • 首先是机器学习的三个步骤: Step1: Model Step2: Goodness of Function Step3: Find the best function Step1: 本次是分析宝可梦(神奇宝贝!!!)进化前的CP值对进化后的CP值的预测。 线性回归的分析,这里先假设...
  • 自1956年提出人工智能的概念,其一方面被认为是人类文明未来的发展方向,另一方面也被认为是难以企及的梦想。然而过去几年,随着GPU并行计算...现在我将系统学习《李宏毅机器学习这门课》,并整理笔记,供学习讨论。
  • [机器学习入门] 李宏毅机器学习笔记-35(Ensemble;集成方法) PDF VIDEOEnsemble 俗称打群架,想要得到很好的performance,基本都要用这一手。 You already developed some algorithms and codes.Lazy to ...
  • 李宏毅机器学习笔记(一) 本次学习的资源为B站上2017年李宏毅老师的网课视频。 机器学习的目标 机器学习的目标实际上是通过 training data 找到一个函数,使该函数拥有根据某些输入而输出的能力。类似于给出一些...
  • 李宏毅机器学习笔记】1、回归问题(Regression) 【李宏毅机器学习笔记】2、error产生自哪里? 【李宏毅机器学习笔记】3、gradient descent 【李宏毅机器学习笔记】4、Classification 【李宏毅机器学习笔记】5...
  • 李宏毅机器学习笔记】1、回归问题(Regression) 【李宏毅机器学习笔记】2、error产生自哪里? 【李宏毅机器学习笔记】3、gradient descent 【李宏毅机器学习笔记】4、Classification 【李宏毅机器学习笔记】5...
  • 李宏毅机器学习笔记】1、回归问题(Regression) 【李宏毅机器学习笔记】2、error产生自哪里? 【李宏毅机器学习笔记】3、gradient descent 【李宏毅机器学习笔记】4、Classification -----------------------...
  • 李宏毅机器学习笔记】1、回归问题(Regression) 【李宏毅机器学习笔记】2、error产生自哪里? 【李宏毅机器学习笔记】3、gradient descent 【李宏毅机器学习笔记】4、Classification 【李宏毅机器学习笔记】5...
1 2 3 4 5 ... 20
收藏数 1,479
精华内容 591
关键字:

李宏毅机器学习 笔记