Author Archives: admin

明朝那些事儿(贰)——万国来朝

朱棣夺取皇位之后,励精图治,发展经济,提倡文教,采取了许多措施大力发展经济,使得天下大治,国家富强,疆域辽阔,被称为永乐盛世。具体措施有以下几点:

郑和下西洋。朱棣进驻南京之后,没有发现朱允炆的踪迹,于是派出两队人马寻找朱允炆的下落,一路是郑和从海路出发,另一路是胡濙从陆路出发。郑和,原名马三保,是云南一个虔诚的伊斯兰教徒。洪武年间,朱元璋军队远征云南,俘虏并阉割了幼小的马三保。后来燕王朱棣挑选马三保作为自己的贴身侍卫。马三保在靖难之役中与朱棣出生入死,立下大功,被朱棣赐姓郑,马三保遂改姓名为郑和。郑和一生七下西洋,远航西太平洋和印度洋,沿海拜访30多个国家和地区,包括伊斯兰教圣地麦加。郑和下西洋虽然没有找到朱允炆的下落,但七下西洋不但宣扬了国威,还大力开拓了海外交流,带来了一大批西洋各国使者,开创了万国来朝的局面。

另一路胡濙的工作就不像郑和那样光明正大了,因为胡濙没有郑和下西洋明面上的任务,他的任务只有一条,就是寻找朱允炆。但寻找朱允炆又不能明说,因为这样无异于告诉所有的人,建文帝还活着,心中别有企图的人必然会蠢蠢欲动,这个皇位注定是坐不稳了。所以胡濙一个人隐匿在平民老百姓中间,在江浙一带晃悠,打探朱允炆的下落。经过十六年的苦苦寻觅,在朱棣远征蒙古的时候,胡濙带着答案来到朱棣的营帐。史料并没有明确记录朱允炆的下落,但当年明月推断胡濙找到了朱允炆,而且两个人进行了亲切友好的会谈,朱允炆表示他不想和朱棣争这个皇位了,只想好好过平民老百姓的日子。朱棣悬了十六年的心终于放下了,他终于可以安心做他的皇帝了,不用担心哪天冒出个朱允炆要和他抢皇位。

Continue reading

明朝那些事儿(壹)——洪武大帝

朱元璋,外号朱重八,1328年生于安徽凤阳。元朝取名字的习惯是父母年龄相加,所以推测此时朱元璋的父母年龄相加为88岁。元朝末年,朝廷腐败,苛捐杂税导致民不聊生。另外,1344年黄河泛滥、淮河流域遭遇严重瘟疫和干旱。朱元璋出生贫农,在这种天灾人祸的情况下,朱元璋的父、母、大哥、大哥长子等相继饿死,家里除了二哥,已经没有其他成员了。在这种情况下,朱元璋为了活下去,去附近的皇觉寺当和尚,主要工作是讨饭。

Continue reading

CS224N(2.12)Convolutional Networks for NLP

今天我们介绍如何使用CNN解决NLP问题。截止目前,我们学习了很多RNN模型来解决NLP问题,由于NLP是序列的问题,使用RNN这种循环神经网络是很符合直觉的,而且也取得了不错的效果。但是,由于RNN速度较慢,而且梯度消失问题比较严重,人们就想借用CV领域的CNN,看是否能解决NLP的问题。

我们在之前的博客中已经详细介绍过卷积神经网络CNN(之前的链接),这里不再详细介绍。下面我们以一篇paper中使用CNN对句子进行情感分类为例,简要介绍下怎样将CNN应用到NLP中。

Continue reading

CS224N(2.7)Question Answering

这节课的内容比较简单,是问答系统(Question Answering, QA)的入门介绍。

首先,为什么需要QA?目前各大搜索引擎对于一个查询,给出的都是一个结果列表。但是很多查询是一个问题,答案也往往比较确定,比如“现任美国总统是谁?”,此时,返回一堆结果列表就显得太过啰嗦了,尤其是在手机等移动设备上搜索时,简单的给出回答也许会更好一些。另一方面,智能手机上的助手如Siri、Google Now之类的,用户期望的也是简洁的答案,而不是一堆网页列表。

QA系统的组成主要有两个部分,一部分是根据问题检索到相关的文档,这部分是传统的信息检索的内容;另一部分是对检索到的文档进行阅读理解,抽取出能回答问题的答案,这部分就是本文要介绍的QA系统。

QA的历史可追溯到上世纪七十年代,但真正取得突破性进展也就是最近几年。2015/2016年,几个大规模QA标注数据集的发表,极大的推动了这个领域的发展。这其中比较有名的数据集是斯坦福大学发布的Stanford Question Answering Dataset (SQuAD)。

Continue reading

CS224N(1.31)Translation, Seq2Seq, Attention

今天介绍另一个NLP任务——机器翻译,以及神经网络机器翻译模型seq2seq和一个改进技巧attention。

机器翻译最早可追溯至1950s,由于冷战的需要,美国开始研制由俄语到英语的翻译机器。当时的机器翻译很简单,就是自动从词典中把对应的词逐个翻译出来。

后来在1990s~2010s,统计机器翻译(Statistical Machine Translation, SMT)大行其道。假设源语言是法语x,目标语言是英语y,机器翻译的目标就是寻找y,使得P(y|x)最大,也就是下图的公式。进一步,通过贝叶斯公式可拆分成两个概率的乘积:其中P(y)就是之前介绍过的语言模型,最简单的可以用n-gram的方法;P(x|y)是由目标语言到源语言的翻译模型。为什么要把P(y|x)的求解变成P(x|y)*P(y)?逐个击破的意思,P(x|y)专注于翻译模型,翻译好局部的短语或者单词;而P(y)就是之前学习的语言模型,用来学习整个句子y的概率,专注于翻译出来的句子从整体上看起来更加通顺、符合语法与逻辑。所以问题就转化为怎样求解P(x|y)

Continue reading

CS224N(1.29)Vanishing Gradients, Fancy RNNs

梯度消失

今天介绍RNN的梯度消失问题以及为了解决这个问题引出的RNN变种,如LSTM何GRU。

上一篇博客中,通过公式推导,我们已经解释了RNN为什么容易产生梯度消失或梯度爆炸的问题,核心问题就是RNN在不同时间步使用共享参数W,导致t+n时刻的损失对t时刻的参数的偏导数存在W的指数形式,一旦W很小或很大就会导致梯度消失或梯度爆炸的问题。下图形象的显示了梯度消失的问题,即梯度不断反传,梯度不断变小(箭头不断变小)。

Continue reading

CS224N(1.24)Language Models and RNNs

今天要介绍一个新的NLP任务——语言模型(Language Modeling, LM),以及用来训练语言模型的一类新的神经网络——循环神经网络(Recurrent Neural Networks, RNNs)。

语言模型就是预测一个句子中下一个词的概率分布。如下图所示,假设给定一个句子前缀是the students opened their,语言模型预测这个句子片段下一个词是books、laptops、exams、minds或者其他任意一个词的概率。形式化表示就是计算概率

\begin{eqnarray}P(x^{(t+1)}|x^{(t)},...,x^{(1)})\tag{1}\end{eqnarray}

x^{(t+1)}表示第t+1个位置(时刻)的词是xx可以是词典V中的任意一个词。

Continue reading

CS224N(1.22)Dependency Parsing

Dependency Parsing是指对句子进行语法分析并画出句子成分的依赖关系,比如对于句子“She saw the video lecture”,首先可以分析出主语、谓语、宾语等句子成分;其次可以分析出依赖关系,比如saw依赖于She等。这就是句法分析。完成句法分析的算法被称为句法分析器parser,一个parser的性能可以用UAS和LAS,UAS就是parse出来的依赖关系对比正确依赖关系的正确率,LAS就是句子成分分析的正确率。

Continue reading

CS224N(1.15 & 1.17)Backpropagation

这篇博客把1.15和1.17两次课内容合并到一起,因为两次课的内容都是BP及公式推导,和之前的Neural Networks and Deep Learning(二)BP网络内容基本相同,这里不再赘述。下面主要列一些需要注意的知识点。

使用神经网络进行表示学习,不用输入的x直接预测输出,而是加一个中间层(图中橙色神经元),让中间层对输入层做一定的变换,然后中间层负责预测输出是什么。那么中间层能学到输入层的特征,相当于表示学习,自动学习特征。对于word2vec,中间层就是词向量。

Continue reading