主页

从 Word Embedding 到 Bert 模型:自然语言处理中的预训练技术发展史

转载自《从WordEmbedding到Bert模型—自然语言处理中的预训练技术发展史》,作者:张俊林 Bert 最近很火,应该是最近最火爆的 AI 进展,网上的评价很高,那么 Bert 值得这么高的评价吗?我个人判断是值得。那为什么会有这么高的评价呢?是因为它有重大的理论或者模型创新吗?其实并没有,从模型创新角度看一般,创新不算大。但是架不住效果太好了,基本刷新了很多 NLP 的任务的最好性能,有些任务还被刷爆了,这个才是关键。另外一点是 Bert 具备广泛的通用性,就是说绝大部分 NLP 任务都可以采用类似的两阶段模式直接去提升效果,这个第二关键。客观的说,把 Bert 当做最近两年 NLP 重大进展的集大成者更符合事实。 本文的主题是自然语言处理中的预训练过程,会大致说下 N...

阅读更多

寻找中国毒枭:芬太尼是如何从中国流向美国的?

转载自《重磅调查:尋找中國毒梟》,作者:吴婧。 本文由端传媒记者和《纽约时报》(The New York Times)特约撰稿人Alex W. Palmer合作报道,材料共享,独立成文。美国当地采访皆由Alex W. Palmer完成。 瑞恩·詹森(Ryan Jensen)做“生意”有个规矩——每位顾客每次只能购买一次剂量的芬太尼(fentanyl)。这名北达科他州(North Dakota)不满18岁的毒贩深知芬太尼的危险。作为一种鸦片(opium)类止痛药,芬太尼的效力比吗啡高50至100倍,按药效折算,1g芬太尼相当于40g海洛因。 10美金,10毫克,就可以让你high一整天——詹森的一位常客说。詹森只卖给信得过的人,并在顾客使用时留在他们身边,以防意外发生。只有一次,...

阅读更多

从语言模型到 Seq2Seq:Transformer 如戏,全靠 Mask

转载自《从语言模型到Seq2Seq:Transformer如戏,全靠Mask》,作者:苏剑林。 相信近一年来(尤其是近半年来),大家都能很频繁地看到各种 Transformer 相关工作(比如 Bert、GPT、XLNet 等等)的报导,连同各种基础评测任务的评测指标不断被刷新。同时,也有很多相关的博客、专栏等对这些模型做科普和解读。 俗话说,“外行看热闹,内行看门道”,我们不仅要在“是什么”这个层面去理解这些工作,我们还需要思考“为什么”。这个“为什么”不仅仅是“为什么要这样做”,还包括“为什么可以这样做”。比如,在谈到 XLNet 的乱序语言模型时,我们或许已经从诸多介绍中明白了乱序语言模型的好处,那不妨更进一步思考一下: 为什么 Transformer 可以实现乱序语言模...

阅读更多

使用 Keras 搭建模型识别验证码:通过 Web API 提供识别服务

最近因为项目上的需求,需要开发一个识别 4 位数字字母验证码的接口。想到自己虽然在科研上使用 Keras 已经有很长时间,但从来没有真正地将这些模型运用起来,或者说以 Web API 的形式对外提供过服务。因此借着这次机会,我正好完整地进行了一次从训练模型到最终包装成网络服务的开发。 准备工作 获取标注数据 无论什么类型的任务,只要希望通过机器学习方法来解决,那么必不可少的就是数据,可以说数据是烹饪“机器学习模型”这道菜必不可少的原料。我们项目的实际需求是识别一个网站上查询数据时需要输入的验证码,因此任务本身非常地简单,只是爬虫的一个中间环节。 虽然每一次刷新网页都可以获得新的验证码,但这些获得的图片都是没有标注的数据,因此无法直接用于我们的监督学习任务,而如果人工标注,则需要...

阅读更多

Seq2Seq 模型入门

转载自《玩转Keras之seq2seq自动生成标题》和《seq2seq之双向解码》,作者:苏剑林,部分内容有修改。 所谓 seq2seq,就是指一般的序列到序列的转换任务,比如机器翻译、自动文摘等等,这种任务的特点是输入序列和输出序列是不对齐的,如果对齐的话,那么我们称之为序列标注,这就比 seq2seq 简单很多了。所以尽管序列标注任务也可以理解为序列到序列的转换,但我们在谈到 seq2seq 时,一般不包含序列标注。 要自己实现 seq2seq,关键是搞懂 seq2seq 的原理和架构,一旦弄清楚了,其实不管哪个框架实现起来都不复杂。早期有一个第三方实现的Keras的seq2seq库,现在作者也已经放弃更新了,也许就是觉得这么简单的事情没必要再建一个库了吧。可以参考的资料还有...

阅读更多

基于 DGCNN 和概率图的轻量级信息抽取模型

转载自《基于DGCNN和概率图的轻量级信息抽取模型》,作者:苏剑林,部分内容有删改。 背景:前几个月,百度举办了“2019 语言与智能技术竞赛”,其中有三个赛道,而我对其中的“信息抽取”赛道颇感兴趣,于是报名参加。经过两个多月的煎熬,比赛终于结束,并且最终结果已经公布。笔者从最初的对信息抽取的一无所知,经过这次比赛的学习和研究,最终探索出在监督学习下做信息抽取的一些经验,遂在此与大家分享。 笔者在最终的测试集上排名第七,指标 F1 为 0.8807(Precision 是 0.8939,Recall 是 0.8679),跟第一名相差 0.01 左右。从比赛角度这个成绩不算突出,但自认为模型有若干创新之处,比如自行设计的抽取结构、CNN+Attention(所以足够快速)、没有...

阅读更多

基于CNN的阅读理解式问答模型:DGCNN

DGCNN 是苏剑林提出的一个基于 CNN 和简单的 Attention 的模型,由于没有用到 RNN 结构,因此速度相当快,而且是专门为 WebQA 式的任务定制的,因此也相当轻量级。 DGCNN (Dilate Gated Convolutional Neural Network) 即“膨胀门卷积神经网络”,它融合了两个比较新的卷积用法:膨胀卷积、门卷积,并增加了一些人工特征和 trick,最终使得模型在轻、快的基础上达到最佳的效果。 背景 DGCNN 模型是作者苏剑林参加 CIPS-SOGOU 问答比赛的产物,比赛数据基本上是跟百度之前开放的 WebQA 语料集一样的,即“一个问题+多段材料”的格式,希望从多段材料中共同决策出问题的精准答案(一般是一个实体片段)。 问题...

阅读更多

Windows 10 系统上的 Python 开发环境配置

前言 在 Linux 环境上进行 Python 开发是很多用户的选择,但在很多情况下我们还是离不开 Windows 系统。因此过去只能通过安装双系统或者虚拟机的方式来完成,但无论哪一种方式都不是很方便。 幸运的是从 Win10 开始,系统已经自带了一个 Linux 子系统 (WSL),并且可以与 Windows 环境无缝连接,这大大简化了在 Windows 上搭建 Linux 开发环境的难度。 准备工作 首先说明一下,因为 Windows 子系统 (WSL) 不支持 GUI 桌面或应用程序(如 PyGame、Gnome、KDE 等),因此本文仅适用于不需要图形化界面的 Python 开发。如果你需要开发包含图形化界面的 Python 程序,请直接在 Linux 系统上进行,或者...

阅读更多