日记大全

日记大全 > 句子大全

10分钟AI 深度学习中那些忽悠人的术语(上)

句子大全 2013-09-06 03:16:54
相关推荐

在看各种大神写的关于深度学习文章或者解读的时候,总是突然冒出让我们猝不及防的各种高大上的术语,在我们查询这些术语的时候,又一次猝不及防看见更多让人头大的术语,尤其是那些文章中的配图,不但不能让我更清晰的理解,反而更加的糊涂了(科学家的通病,好像不把问题弄复杂了就显得他们是白痴一样)。在这里,小白就用要多俗有多俗的语言来揭开这些术语的真面目。注意,本文只涉及原理解释,应用部分后面如果小白在研究中涉及到了,会有详细解释的。

OneHot Coding

这个是我见过最忽悠人的术语,但是其本质就是一个给样本编号的过程。举个最简单的例子,给定一个样本数组:a = ["我",’爱‘,’北京‘,’天安门‘],我们给不重复的元素进行标号,也就是{‘我’,0},{‘爱’:1},{’北京‘:2},{’天安门‘,3},ok 编码结束了。原始样本可以用数字来表示了:a=[0,1,2,3],当然,其中的每一个元素也可以用向量来表示了,比如说”我“可以表示为:[1,0,0,0],向量的长度就等同于不重复元素的个数。

Bag of Word(词袋模型)

史上最坑爹的模型,最简单的理解就是将一堆词胡乱的丢到一个袋子里,不考虑其顺序,关联度。如果将文档中的每句话转换为词袋模型向量的话,就无脑的数一下句子里每个词在文档中出现的频率,然后….就结束了。还是不懂?给你两句话的词袋向量表达:

1. 天气 真 好 [2,2,1,0]2. 天气 真 坏 [2,2,0,1]词袋:[天气,真,好,坏]

就是这么简单!(这要还看不出来就放弃AI吧。)

n-Gram

鉴于传统词袋模型的坑爹属性(没有词顺序,词关联),有大神不满足了,想解决这个问题。怎么办呢,考虑一下我们平时写文章的过程 -- 先随便写一个词,然后再想下一个词。这时候就可以假设了:一个词的出现只和其前n个词相关。 搞点专业的表达,一个词出现的概率可以表示为:

那么,一句话的出现就可以用最最基本的概率公式计算出来。这下你应该明白nGram怎么训练的吧?就是最大化句子出现的概率就好了。

CBOW

CBOW比nGram进步的一点在于,其考虑了词与其上下文的关联。但本质上,就是换了一个假设:一个词的出现只和周围的n个词相关。 总的来说,就是在一句话里,随便选定一个词,看看左边几个,看看右边几个,再测算其出现的概率:

其余就和nGram大同小异了。

Embedding(嵌入)

百度百科上对嵌入的定义是这样的:将样本通过变换映射到一个低维稠密的空间里。用大白话说,就是用一个低纬度的向量来表示原始样本。但是,嵌入的发明者还想要保证词语间的关联性,比如同义词,近义词等等。说了这么多,然并卵,到底要怎么得到这个低维向量呢?这个全靠一个最最简单的假设:相似的词汇有着相似的上下文。为什么在这个假设下Embedding向量就可以保证关联性和相似性呢?很简单,我们拿上文的CBOW举例,假设有n个词的上下文都一样,是不是就可以认定这n个词都有相似的概率分布?这个就是嵌入的基本思想。当然在具体的嵌入学习上没有例子这么简单,我们将在下一篇文章中详细描述。

Representation Learning(表示学习)

从字面上理解,表示学习就是通过一系列过程来学习对样本的精确描述。比如,如果有一个样本--”狗“,通过观察,我们得到了一个比较准确地描述:”喜欢吃肉骨头的忠诚的动物“,这算是我们人类范畴的表示学习。当然,在计算机的世界里,一般来说,对于原始样本的表示都最终会以一个带有样本特征的向量来描述,比如上文中Embedding,OneHot就是一个表示学习的例子,具体区别就在于学习到的”表示“是不是靠谱。

Activation Function(激活函数)

在上一篇文章中(10分钟AI-Residual Connection(残差连接)),我们介绍了最基本的神经网络架构。一般来说,神经网络中的特征映射函数就是简单的线性加权,这也导致了如果使用梯度优化(反向传播)时每个参数的偏导数为一个常量(如果不使用激活函数)导致无论多深的神经网络也是然并卵。而激活函数就是为了保证偏导不为常数所设定的,这也是为什么激活函数必须为非线性原因。从另一方面理解,激活函数也是为了平衡每个特征空间中维度对于最终预测的权重(也就是是否激活这个特征),因为在原始样本中,没有人能保证所有元素都是有用的。比如再识别大猩猩的照片中出现了一个人,所以学习到人特征的神经元对最终结果的帮助几乎为0,所以在一个良好的神经网络中,这些与人特征有关的神经元会被激活函数抑制(激活值趋向于0,甚至可以是负数)。

Transfer Learning(迁移学习)

抛开繁琐的计算机世界的概念,我们先认知一下人类的迁移学习。举几个例子:1)你懂得中文的语法结构的情况下,去学习英文的语法结构。2)你每天练习跑100m的情况下去跑1000m。3)会下中国象棋的你去学习国际象棋。注意到没有,迁移学习的本质都是通过已有的知识去学习相似的知识。回到计算机的世界里,道理也一样。比如通过猫的模型去学习关于老虎的特征。再比如通过所有鲜花的特征去识别其中某一种花。问题来了,为什么要使用迁移学习而不是重头学习呢?答案有两方面:其一,你并不能保证你需要学习的目标有足够的数据。其二,偷懒,懒惰是技术发展的原动力。在已经有大致轮廓的情况下没人愿意重新再设计一套东西了吧。

Multi-Task Learning(多任务学习)

了解多任务学习时首先我们需要了解什么叫单任务学习。比如,识别一句话所蕴含的情绪,识别花草,这种有着特定目的的识别任务都可以叫做单任务学习。引申到多任务呢?别急,你肯定以为把单个任务相加一起训练就叫多任务学习了吧,太天真了兄嘚。多任务学习的意义就在于同时学习相似的任务(相似很重要),任务间可以互通有无。如果硬要类比的话,单任务学习好比一个能力很强的人独立完成一件事,多任务就相当于一个默契很高的团队互相配合的完成一个大型的项目。当然,多任务学习在很大程度上借鉴了迁移学习的一些理论(这也是为什么我先介绍迁移学习的原因~),利用多个相似任务的共性来减少训练的时间并且提升模型的容错度(也就是所谓的泛化性能)。

End-to-End Learning(端对端学习)

又是一个忽悠的概念,我们首先介绍一下非端对端。考虑下面一种情况:张妈拿着一大堆一分钱的硬币(10000枚)去买西红柿和鸡蛋,花了50元,买回来之后应当剩余5000枚硬币。但是由于张妈年事已高,买菜时很容易数错硬币,这导致什么问题?当第一个数错的事件发生后,剩余硬币的数量会越来越远离正确的数量。当然这个例子并不恰当(主要是我想不出好例子),因为买菜事件都是独立的,但假设下一个菜贩的价格和你当前拥有的硬币数成反比呢(钱越少菜价越贵)?这就是非端对端学习的缺陷,必须保证每一个步骤不出错才能得到好的结果,否则就会引发雪球效应,错误被越放越大。而端对端学习就不考虑买菜的过程,简单粗暴的只考虑输入和输出。就是我原本有10000枚硬币,出来的时候必须是5000枚+西红柿和鸡蛋,至于中间怎么买怎么砍价,怎么找出错误分配的硬币都不去理会,只要结果对了就行。这样做的好处是显而易见的,并且可以很广泛的应用到各个场景。比如传说中的各种神经网络就是端对端学习的例子。

大家可以把自己感兴趣的反向和问题留言在评论区,小白如果涉猎到了也会根据大家的反馈来调整笔记的方向。

AI小白是一名刚入清华大学的小小研究生,也是众多AI爱好者中的一员,希望与大家共同进步。每天会把我自己的读书笔记和心得放上来供大家参考。

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新