牛津大学CS课程_Deep learning for NLP 第二期

翻译来自牛津大学cs课程 NLP的deep learning
github地址:https://github.com/oxford-cs-deepnlp-2017/lectures
视频课程地址:http://media.podcasts.ox.ac.uk/comlab/deep_learning_NLP/2017-01_deep_NLP_1b_friends.mp4

前言

接上一篇文章:
牛津大学CS课程_Deep learning for NLP https://blog.csdn.net/qq_35314511/article/details/86712670
P.S. 上一期忘记贴视频地址了,已经补上

距离上一期翻译过了很久,这段时间接了几个兼职项目,忙飞了。。。
本期是这门课的第二讲:Lecture 1b Deep Neural Networks Are Our Friends
这一期的老师是来自google deepmind的wang ling(我也不知道中文名)
上一期介绍了这门课所需的知识储备,数学啊机器学习什么什么的,以及目前nlp的几大板块(语音处理,机器翻译,图像理解,语义结构),这一期主要是介绍机器学习的基本概念。

1b的ppt和视频都很长,内容虽然很多,但是从浅到深铺垫的非常好,不过后半部分对数学功底的要求很高(我这个战五渣)!!!由于难度跨度非常大,这一讲我会按照ppt的2个part分2期翻译。这一期主要是视频前20分钟的内容,对应ppt前100页(Part I)。
尽管如此,本期的篇幅还是会相当~~相当~~~相当长,但我个人还是习惯于把总结和感想放在末尾。
如果我的文章能对你有帮助那就万分荣幸。
let’s go

Lecture 1b

内容概要

Part I - Neural Networks are our friends 第一部分 - 神经网络是我们的朋友
○ Numbers are our friends ○数字是我们的朋友
○ Variables are our friends ○变量是我们的朋友
○ Operators are our friends ○操作是我们的朋友
○ Functions are our friends ○函数是我们的朋友
○ Parameters are our friends ○参数是我们的朋友
○ Cost Functions are our friends ○成本函数是我们的朋友
○ Optimizers are our friends ○优化算法是我们的朋友
○ Gradients are our friends ○函数梯度是我们的朋友
Part 2 - Into Deep Learning 第二部分 - 进入深度学习
○ Nonlinear Neural Models ○非线性神经模型
○ Multilayer Perceptrons ○多层感知器
○ Using Discrete Variables ○使用离散变量
○ Example Applications ○示例应用程序

第一部分

Abby 和 Bert 分别有4个苹果和5个香蕉(数字)
牛津大学CS课程_Deep learning for NLP 第二期_第1张图片
这里用x和y分别指代苹果和香蕉(变量)
牛津大学CS课程_Deep learning for NLP 第二期_第2张图片
Abby给了Bert1个苹果,Ber就会t给Abby3个香蕉
牛津大学CS课程_Deep learning for NLP 第二期_第3张图片
到这里为止我们会轻易的得出结论函数 Y = 3 X Y = 3X Y=3X
牛津大学CS课程_Deep learning for NLP 第二期_第4张图片
牛津大学CS课程_Deep learning for NLP 第二期_第5张图片
牛津大学CS课程_Deep learning for NLP 第二期_第6张图片
比如语言翻译,谷歌Alpha Go和图像识别都是经过X(输入)到Y(输出)的函数过程。
接下来要我们自己去找函数的规律
牛津大学CS课程_Deep learning for NLP 第二期_第7张图片
牛津大学CS课程_Deep learning for NLP 第二期_第8张图片
作为举例,我们用了一个线性函数的模型 y = w x + b y =wx + b y=wx+b
其中x是输入,y是输出,w和b是参数
输入来自我们的数据,是固定的;参数则是我们的系统要估算的;
牛津大学CS课程_Deep learning for NLP 第二期_第9张图片
牛津大学CS课程_Deep learning for NLP 第二期_第10张图片
在这里我们有2个候选模型,判断候选模型的优劣的时候我们使用Cost function成本函数(方差的和)
牛津大学CS课程_Deep learning for NLP 第二期_第11张图片
我们用 C ( w , b ) = ∑ n = 0 , 1 , 2 ( y n − y n ′ ) 2 C(w,b) = \sum_{n=0,1,2} (y_n - y'_n)^2 C(w,b)=n=0,1,2(ynyn)2指代成本函数
牛津大学CS课程_Deep learning for NLP 第二期_第12张图片
这里可以看到第二个候选函数的C(w,b)明显要小,因此候选二更贴近我们要求的w,b
在机器学习的思想中,我们是通过优化算法来求取w和b的值的:
牛津大学CS课程_Deep learning for NLP 第二期_第13张图片
优化算法arg min C(w,b)的工作原理如下:
牛津大学CS课程_Deep learning for NLP 第二期_第14张图片
我们将w的值+1后计算C(w,b)的值,发现C(3,2)的值更小,也就是更贴近我们要求的线性函数,但是C(4,2)的值反而变大了,说明其与我们的线性函数更偏离
牛津大学CS课程_Deep learning for NLP 第二期_第15张图片
同理针对b,通过计算得出C(3,1)C(3,2)更接近
牛津大学CS课程_Deep learning for NLP 第二期_第16张图片
牛津大学CS课程_Deep learning for NLP 第二期_第17张图片
牛津大学CS课程_Deep learning for NLP 第二期_第18张图片
牛津大学CS课程_Deep learning for NLP 第二期_第19张图片
牛津大学CS课程_Deep learning for NLP 第二期_第20张图片
因此我们的计算机会根据上述步骤自动计算更优解,和下跳棋有那么点类似
牛津大学CS课程_Deep learning for NLP 第二期_第21张图片
此时算到C(3,0),另外3个方向都不能缩小偏差值,但是和我们求的函数还是有差值牛津大学CS课程_Deep learning for NLP 第二期_第22张图片
其实并不难看出我们要求取的最优解是 y = 4 x − 4 y=4x - 4 y=4x4
但是当我们算到C(3,0)时,另外3个方向都不能缩小偏差值。我们把这个问题叫做Search Problem。如图所示,我们的搜索区间直接进入了红色部分,但是只有白色部分才能更靠近我们求的点。所以在这种时候,我们采用“缩小单位长度”的办法,把每次计算差值从1编程0.1,从图上看就是每次走更小的格子,直到达到最优解。牛津大学CS课程_Deep learning for NLP 第二期_第23张图片
牛津大学CS课程_Deep learning for NLP 第二期_第24张图片
使用机器学习处理这类问题的基本思想,就是计算机通过不断的尝试来达到最优解,在尝试的过程中,我们会使用“大步走”和“小碎步”两种优化方式:“大步走”虽然精度不高,但是处理速度很快,能尽快找到最靠近的最优解;“小碎步”拥有更高的精度,但是会消耗大量的系统资源和时间来计算。所以在实际操作中,一般都是在达到“当前最优解”之后,将度量改小后继续计算,直到达成“实际最优解”
牛津大学CS课程_Deep learning for NLP 第二期_第25张图片
牛津大学CS课程_Deep learning for NLP 第二期_第26张图片
当我们谈到机器学习中的一大热门——图像识别的时候,也是机遇这种思想。不同之处在于,我们输入的图像是一个非常复杂的数据集合而非简单的一元变量。每一个像素点都是一个输入的值,每一个输入的值都需要估测参数。视频中说到,40 x 40像素的小图片就是1600个输入的集合,如果是一般使用的rgb图像,就意味着每一个输入都是(r,g,b)的集合(题外话:所以我们做的时候上来先灰度处理了…)
在这种情况下,我们将面对的是几百万的参数,几百万的样本…这其中对计算机性能、算法优化、数据预处理的考验可想而知牛津大学CS课程_Deep learning for NLP 第二期_第27张图片
正如ppt所说,这种一步步“试错”的方法开销非常大,我们应该谨慎保守的使用
由于计算机的性能限制,我们不得不转向数学方法来解决寻求“最优解”的问题
牛津大学CS课程_Deep learning for NLP 第二期_第28张图片
在这里我们用hw定义我们的step大小,得到公式 r = ( C ( w 0 + h w , b 0 ) − C ( w 0 , b 0 ) ) h w r = \frac{(C(w_0 + h_w ,b_0) - C(w_0 ,b_0))}{h_w} r=hw(C(w0+hw,b0)C(w0,b0))
r即是step为hw下从(w0,h0)走到(w0 + hw,b0)在纵轴w上的修正值。
牛津大学CS课程_Deep learning for NLP 第二期_第29张图片
此时我们考虑hw无限趋近于零的情况,根据下图公式求导得C(2,2)w轴上的r值为-104牛津大学CS课程_Deep learning for NLP 第二期_第30张图片
这里偏C对偏W求导,求导结果为 ∑ n = 2 ( y n − y n ′ ) x n \sum_n = 2(y_n - y'_n)x_n n=2(ynyn)xn
下图给出了偏C对偏b的求导过程
牛津大学CS课程_Deep learning for NLP 第二期_第31张图片
在视频中上两个公式都多了个-号,所以视频的ppt和pdf版本会不一样(当时还以为自己一元一次都算错真的掩面哭泣)
最后的优化算法结果:
牛津大学CS课程_Deep learning for NLP 第二期_第32张图片
牛津大学CS课程_Deep learning for NLP 第二期_第33张图片
上图的å是学习率/step
有了上述公式,我们就可以根据w,b值直接计算候选模型和实际模型的偏差,即从(w,b)点走向下一个正确点的所需开销,这也是我们构建成本函数的意义。
牛津大学CS课程_Deep learning for NLP 第二期_第34张图片
通过100页ppt的介绍,我们介绍了你必须了解的最基础的机器学习算法(为了通向感知机学习之路!)
首先,我们收集代表现实意义的数据(原话:收集现实证据来解决你的问题);然后你要发现解决问题的模型,这取决于你自己(所以这真的很难),当你学习了deep learning以后你会发现有很多很多模型供你参考;在你解决了模型问题后,你需要用Cost function来计算你的模型调整需要多大的开销;then你需要用优化算法来调整你的模型。
然而,在这些所有的基础上,除了data部分,程序员们花了大量的工作处理这些问题:如何更好的寻找最佳匹配模型、如何更好的计算成本开销、如何生成更好的优化算法等等。所以在各个领域都有大量的研究等待去做(按照自己学校大学老师的习惯这时候就该嘴上跑火车了。。。)
所以当你准备好了以上四步之后,你就可以形成你自己想要的的系统模型了~(原话:系统?函数?随便啦反正是你想要的)

总结

经过那么长~~那么长~~那么长的介绍,这一讲的Part I结束。
Part I的主旨还是介绍为主,重要的是要理解机器学习的基本思想。我们为什么要做成本计算和优化算法。其实还是硬件跟不上算法的设想,在时间和空间上只能通过优化来使我们更快的(能够)得到结果。虽然ppt用了一元一次函数来举例,但是当输入的量级和复杂度超过百万的时候,整个系统的设计和算法的实现需要考虑方方面面的因素,非常非常复杂。面对非线性数据模型的时候,算法的设计更加复杂,这些会在下一期的文章中提到。

目前这一期还是对于基础知识的介绍,如果看到一半觉得非常难理解的同学…可能需要更多努力
在看视频的过程中,同声翻译和跟着ppt做推导是很有意思的事情,当然啦对于大神来说看一眼就懂的公式我应该需要好几张草稿纸

对于这一类的学习资料,网上的翻译文章应该是非常多的,但是我还是坚持不看别人的自己做,一方面可以训练自己的听写翻译能力,另一方面也是一种执着吧,学习第二手的资料可能已经是别人的"under解读"或者"over解读"。包括写博客,也算是对自己的一种督促。自己数学能力不行,看到公式就恐惧。。。。希望能坚持学完吧

关于机器学习,开源的成熟框架很多,自己也做过猫、水果的图像识别,但是总觉得不把底层的学个一知半解有些遗憾。工作以后深深感觉,很多开源仅仅会用是不够的,需要能够根据自己的市场需求和实际情况进行调整和修改,才能符合公司市场化的开发要求,所以对于基础框架的再开发能力相当重要呀

虽然同为deep learning领域下的学科,个人感觉NLP却不怎么被市场重视,业内都没听到有什么特别高薪挖人或者新开部门的消息(是我消息闭塞…)科大讯飞也一直被传皇粮不能断。。。。。(此处禁言30秒)中文博大精深,更不要说古汉语和古诗词的部分了(古汉语算自然语言吗)。语义解读,情感词分析,自动生成古诗这些做的很多,但是又感觉缺了点什么。相对于现代汉语上的突飞猛进,nlp真的不能针对古汉语做点什么吗?古汉语nlp就没有其价值所在吗?我也不知道答案

P.S. 虽然是公开课资料,但是看了下视频资料是oxford域名下的,好像是需要科学上网才能看。

你可能感兴趣的:(课程,翻译)