分类目录归档:深度学习

AINLP-DBC GPU 云服务器租用平台建立,价格足够便宜

我用过不少深度学习服务器,也包括一些GPU云服务器,相对来说,GPU云服务器是比较贵的。最近深脑链的同学让我试用了通过DBC Token结算的GPU云服务器,感觉相当的便宜和好用,所以尝试推荐大家试用,我们和深脑链达成合作,建立了AINLP-DBC GPU云服务器租用平台https://gpu.ainlp.cn

需要提前说明的时候,基于深脑链技术提供的GPU服务平台是采用数字货币DBC Token结算的,对于这块儿我之前是比较犹豫的,不希望大家通过这个涉及“炒币”,只是希望大家可以通过一种比较便宜好用的方式尝试使用GPU云服务器。在完整的体验了整个使用流程之后,我觉得是可用推荐给大家使用的,特别是学习深度学习,又没有GPU机器的同学,或者打比赛的时候有临时GPU需求的同学。欢迎感兴趣的同学加入我们的种子用户交流群(群二维码见文末,或者添加微信id:AINLP2,注明GPU,邀请入群),深脑链的同学会给每位新用户提供2400DBC,约可以使用48小时的GPU云服务器,对于使用过程中的任何问题,深脑链的同学都会在群里进行及时的解答。
继续阅读

认真推荐一份深度学习笔记:简约而不简单

认真推荐一份深度学习笔记:dl-notes ,作者是我的师兄朱鉴,很多年前,他也给过我一份《无约束最优化》的笔记,在这里发布过。这份文件虽然被他命名为:一份简短的深度学习笔记,但是我读完后的第一反应是:简约而不简单。师兄在工作上一直是我的偶像,他在腾讯深耕自然语言处理相关方向6年,之后又一直在小米打拼,作为技术专家,现在主要负责对话系统相关的工作。他在工作上兢兢业业,但是工作之余也一直在学习,前两天他把这份笔记给我,说这是工作之余学习的一个总结,希望分享给大家。这份深度学习笔记共有150多页,从基础的微积分、线性代数、概率论讲起,再到数值计算、神经网络、计算图、反向传播、激活函数、参数优化、损失函数、正则化等概念,最后落笔于网络架构,包含前向网络、卷积网络、递归网络以及Transformer和Bert等,涵盖的内容非常系统全面。强烈推荐给大家,个人觉得这是一份极好的深度学习中文材料,可用于深度学习入门或者平时工作参考,当然也可以基于这份笔记的任何一个章节做深度扩展阅读和学习。

以下是这份笔记的完整目录:


继续阅读

通过Docker部署深度学习项目环境

深度学习环境部署的方法有很多种,其中Docker化深度学习环境和项目是一个很不错的选择。这里写过一些深度学习主机安装和部署的文章,这篇文章记录一下相关的通过Docker来部署和测试深度学习项目的一些经验,以下是在一台4卡1080TI,Ubutu16.04的机器上的记录。

一、安装Docker:

关于Docker的相关介绍资料比较多,这里就不多说了,感兴趣的同学可以自行Google或者看一下参考资料。

1)使用APT安装:

$ sudo apt-get update

$ sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
            software-properties-common

2) 使用国内源:

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

3) 向source_list添加Docker源:

$ sudo add-apt-repository \
            "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu
            \
                $(lsb_release -cs) \
                stable"

# 官方源
# $ sudo add-apt-repository \
#    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
#    $(lsb_release -cs) \
#    stable"

4)更新 apt 软件包缓存,并安装 docker-ce:

$ sudo apt-get update
$ sudo apt-get install docker-ce

5) 添加用户组(安装后貌似这个组已经存在了):

sudo groupadd docker

6) 将当期用户添加到这个组里并退出重新登录:

sudo usermod -aG docker $USER

7) 测试Docker:

docker run hello-world

8) 添加过内镜像代理:

sudo vim /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ]
}

9)重启Docker服务

sudo systemctl daemon-reload
sudo systemctl restart docker

二、安装nvidia-docker:

单独安装Docker之后还无法使用带GPU的深度学习机器,需要再安装一下英伟达出品的Nvidia-docker。

1)安装:

# Add the package repositories
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker

继续阅读

AINLP公众号"自动作诗机"上线

最近对自然语言生成或者文本自动生成技术比较感兴趣,做了一些调研,作为自然语言处理领域的难题之一,个人一直觉得自然语言生成(NLG)是最难的,虽然这一两年动辄会看机器模仿莎士比亚写剧本,模仿金庸写小说,这些不过是媒体用来吸引眼球的,总之这些字凑到一起看起来像模像样,但是读了之后不知所云。不过对于特定格式的文本,类似诗歌这种,如果不细究,从直观的角度来看确实还有点像那么回事,例如清华大学自然语言处理与社会人文计算实验室开发的九歌计算机诗词创作系统,还是很强大的:

所以我首先将目光瞄准了诗歌自动生成相关的资料上,在google了一圈后,锁定了ioiogoo同学的这篇文章和两个开源版本实现:

1)介绍文章:用Keras实现RNN+LSTM的模型自动编写古诗
2)ioiogoo同学原始版本代码:https://github.com/ioiogoo/poetry_generator_Keras
3)youyuge34同学的更新版本:https://github.com/youyuge34/Poems_generator_Keras

特别是最后这个版本,作者直接提供了训练好的模型数据:poetry_model.h5,如果不想训练,直接下载这个模型把玩即可。我尝试了一下训练流程,训练几百步的时候会报错,具体原因还没有细究。不过在继续训练自己的模型之前,可以基于作者提供的模型将这个自动作诗模块包装到AINLP公众号对话接口中去,所以花了一点时间,在AINLP公众号上上线了这个自动作诗机模块,算是玩具级别的自动作诗机吧,目前支持两个功能:藏头诗(提供四个字)和首字诗(提供一个字):

请注意这两个功能目前只提供'五言绝句'的生成,因为上述代码在训练模型的时候已经过滤了其他诗词,另外这套代码也用了一些trick,生成的结果也是随机的,每次都不一样。最后,感兴趣的同学欢迎关注AINLP公众号,直接在公众号对话里测试即可:

关于文本自动生成或者自然语言生成,如果有好的idea或者素材或者想法,欢迎留言讨论,这里也会继续关注这个话题。

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:AINLP公众号"自动作诗机"上线 http://www.52nlp.cn/?p=11995

Python中文分词工具大合集:安装、使用和测试

这篇文章事实上整合了前面两篇文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考。

首先介绍之前测试过的8款中文分词工具,这几款工具可以直接在AINLP公众号后台在线测试,严格的说,它们不完全是纯粹的中文分词工具,例如SnowNLP, Thulac, HanLP,LTP,CoreNLP都是很全面的(中文)自然语言处理工具。安装这些模块其实很简单,只要按官方文档的方法安装即可,以下做个简单介绍,在Python3.x的环境下测试,Ubuntu16.04 或 MacOS 测试成功。

再附加介绍12款其他的中文分词工具或者中文分词模块,最后的两款fnlp和ansj是比较棒的java中文分词工具,貌似还没有python接口,记录一下。这些中文分词工具我没有测试,感兴趣的同学可以动手试试。
继续阅读

AI技术内参:关于数据科学的9个分享

最近被安利了一个极客时间的专栏:《AI技术内参》,作者是洪亮劼老师,美国Etsy工程总监,前雅虎研究院高级研发经理。选了一些章节试读,觉得可以安利一下这个专栏,好东西要分享,希望你能耐心看完这篇文章。通过这个专栏大概可以一窥工业界的一些玩法,工业界和学术界的碰撞,另外从目录来看这个专栏覆盖的范围也很广,包括自然语言处理、计算机视觉、数据科学、推荐系统、广告系统、搜索核心技术的传统机器学习方法和新的深度学习方法。这个专栏目前已经完结,稍微花一些时间大概就可以看完或者听完,从现在开始到5月4日24时,79元,大概一本书的价格,感兴趣的同学可以参与:《AI技术内参

前十讲主要是关于数据科学的一些经验,分享一下打动我的9个点,关于数据科学,个人觉得这些对于还没有进入工业界的同学特别是想进入人工智能行业的同学来说很有参考意义,AI相关技术的算法工程师不仅仅玩算法,玩框架,更需要有数据科学思维、系统闭环思维、以及面向产品思维:


继续阅读

玩转腾讯词向量:Game of Words(词语的加减游戏)

上一篇文章《腾讯词向量实战:通过Annoy进行索引和快速查询》结束后,觉得可以通过Annoy做一点有趣的事,把“词类比(Word Analogy)”操作放到线上,作为AINLP公众号聊天机器人的新技能,毕竟这是word2vec,或者词向量中很有意思的一个特性,刚好,Annoy也提供了一个基于vector进行近似最近邻查询的接口:

get_nns_by_vector(v, n, search_k=-1, include_distances=False) same but query by vector v.

英文词类比中最有名的一个例子大概就是: king - man + woman = queen, 当我把这个例子换成中文映射到腾讯的中文词向量中并且用gensim来计算,竟然能完美复现:国王 - 男人 + 女人 = 王后

In [49]: result = tc_wv_model.most_similar(positive=[u'国王', u'女人'], negative
    ...: =[u'男人'])
 
In [50]: print("%s\t%.4f" % result[0])
王后    0.7050

然后把国王换成皇帝,还能完美的将“王后”替换为“皇后”:

In [53]: result = tc_wv_model.most_similar(positive=[u'皇帝', u'女人'], negative
    ...: =[u'男人'])
 
In [54]: print("%s\t%.4f" % result[0])
皇后    0.8759

虽然知道即使在英文词向量中,完美的词类比列子也不多,另外据说换到中文词向量场景下,上述例子会失效,没想到在腾讯AI Lab这份词向量中得到完美复现,还是要赞一下的,虽然感觉这份腾讯词向量在处理词的边界上不够完美,引入了很多无关介词,但是"大力(量)出奇迹",882万的词条数,一方面有很高的词语覆盖率,另外一方面可以完美的将英文词向量空间中的"king - man + woman = queen"映射到中文词向量空间的"国王 - 男人 + 女人 = 王后",不得不感慨一下数学之美,词语之美。

在此前google的时候,据说在中文词向量场景下一个更容易出现的词类比例子是:机场-飞机+火车=火车站,这个确实可以通过gensim在腾讯词向量中得到复现:

In [60]: result = tc_wv_model.most_similar(positive=[u'机场', u'火车'], negative
    ...: =[u'飞机'])
 
In [61]: print("%s\t%.4f" % result[0])
火车站  0.7885

通过Annoy,我把这个服务做到线上,现在可以在AINLP公众号后台测试,结果看起来也还不错:“机场-飞机+火车=高铁站”:


继续阅读

斯坦福大学深度学习自然语言处理课程CS224N 2019 全20个视频分享

近期一直关注着斯坦福大学深度学习自然语言处理课程CS224N在油管上的视频更新情况,直到昨天看到他们分享了第20个视频资源:

Stanford CS224N: NLP with Deep Learning | Winter 2019 | Lecture 20 – Future of NLP + Deep Learning

结合斯坦福大学CS224n官网课程Schedule,大概率这门课程的视频官方应该分享完了:CS224n: Natural Language Processing with Deep Learning Stanford / Winter 2019

通过youtube-dl以及bypy两个神器这里再次更新一下CS224n的20个课程视频,感兴趣的同学可以关注我们的公众号AINLP,回复'cs224n'获取全部视频合集:

最后列一下cs224N的相关资源:

课程主页:
http://web.stanford.edu/class/cs224n/index.html

官方课程视频网站:
http://onlinehub.stanford.edu/cs224

官方油管视频List:
https://www.youtube.com/playlist?list=PLoROMvodv4rOhcuXMZkNm7j3fVwBBY42z

课程除视频以为的相关资料都可以从schedule下载,包括ppt等:
http://web.stanford.edu/class/cs224n/index.html#schedule

课程优秀项目网站:
http://web.stanford.edu/class/cs224n/project.html

B站视频链接:
https://www.bilibili.com/video/av46216519

参考:
2019斯坦福CS224n深度学习自然语言处理课程视频和相关资料分享

2019斯坦福CS224n深度学习自然语言处理课程视频和相关资料分享

斯坦福大学2019年新一季的CS224n深度学习自然语言处理课程(CS224n: Natural Language Processing with Deep Learning-Stanford/Winter 2019)1月份已经开课,不过视频资源一直没有对外放出,直到前几天官方在油管上更新了前5节视频:CS224n: Natural Language Processing with Deep Learning | Winter 2019

这门自然语言处理课程是值得每个NLPer学习的NLP课程,由 Christopher Manning 大神坐镇主讲,面向斯坦福大学的学生,在斯坦福大学已经讲授很多年。此次2019年新课,有很多更新,除了增加一些新内容外,最大的一点大概是代码由Tensorflow迁移到PyTorch:

这几年,由于深度学习、人工智能的概念的普及和推广,NLP作为AI领域的一颗明珠也逐渐广为人知,很多同学由此进入这个领域或者转行进入这个领域。Manning大神在第一堂课的视频开头之处给学生找位子(大概还有很多同学站着),同时开玩笑的说他在斯坦福大学讲授自然语言处理课程的第一个十年,平均每次选课的学生大约只有45个。

这门课程的主要目标是希望学生:能学到现代深度学习相关知识,特别是和NLP相关的一些知识点;能从宏观上了解人类语言以及理解和产生人类语言的难度;能理解和用代码(PyTorch)实习NLP中的一些主要问题和人物,例如词义理解、依存句法分析、机器翻译、问答系统等。

关于课程视频,目前官方只放出了前5节课程视频,我下载了一份放到了百度网盘里,感兴趣的同学可以关注AINLP,回复"cs224n"获取,这份视频会持续更新,直到完整版,欢迎关注:


继续阅读

相似词查询:玩转腾讯 AI Lab 中文词向量

周末闲来无事,给AINLP公众号聊天机器人加了一个技能点:中文相似词查询功能,基于腾讯 AI Lab 之前公布的一个大规模的中文词向量,例如在公众号对话窗口输入"相似词 自然语言处理",会得到:自然语言理解、计算机视觉、自然语言处理技术、深度学习、机器学习、图像识别、语义理解、语音识别、自然语言识别、语义分析;输入"相似词 文本挖掘",会得到:数据挖掘、文本分析、文本数据、自然语言分析、语义分析、文本分类、信息抽取、数据挖掘算法、语义搜索、文本挖掘技术。如下图所示:

关于这份腾讯中文词向量 Tencent_AILab_ChineseEmbedding.txt ,解压后大概16G,可参考去年10月份腾讯官方的描述:腾讯AI Lab开源大规模高质量中文词向量数据,800万中文词随你用

从公开描述来看,这份词向量的质量看起来很不错:

腾讯AI Lab此次公开的中文词向量数据包含800多万中文词汇,其中每个词对应一个200维的向量。相比现有的中文词向量数据,腾讯AI Lab的中文词向量着重提升了以下3个方面,相比已有各类中文词向量大大改善了其质量和可用性:

⒈ 覆盖率(Coverage):

该词向量数据包含很多现有公开的词向量数据所欠缺的短语,比如“不念僧面念佛面”、“冰火两重天”、“煮酒论英雄”、“皇帝菜”、“喀拉喀什河”等。以“喀拉喀什河”为例,利用腾讯AI Lab词向量计算出的语义相似词如下:

墨玉河、和田河、玉龙喀什河、白玉河、喀什河、叶尔羌河、克里雅河、玛纳斯河

⒉ 新鲜度(Freshness):

该数据包含一些最近一两年出现的新词,如“恋与制作人”、“三生三世十里桃花”、“打call”、“十动然拒”、“供给侧改革”、“因吹斯汀”等。以“因吹斯汀”为例,利用腾讯AI Lab词向量计算出的语义相似词如下:

一颗赛艇、因吹斯听、城会玩、厉害了word哥、emmmmm、扎心了老铁、神吐槽、可以说是非常爆笑了

⒊ 准确性(Accuracy):

由于采用了更大规模的训练数据和更好的训练算法,所生成的词向量能够更好地表达词之间的语义关系,如下列相似词检索结果所示:

得益于覆盖率、新鲜度、准确性的提升,在内部评测中,腾讯AI Lab提供的中文词向量数据相比于现有的公开数据,在相似度和相关度指标上均达到了更高的分值。在腾讯公司内部的对话回复质量预测和医疗实体识别等业务场景中,腾讯AI Lab提供的中文词向量数据都带来了显著的性能提升。

当然官方的说法归官方,我还是遇到了一些bad case,例如输入官方例子 "相似词 兴高采烈" 和输入"相似词 腾讯",我们会发现一些"bad case":

另外这里用到的这份腾讯词向量数据的词条数总计8824330,最长的一个词条是:关于推进传统基础设施领域政府和社会资本合作(ppp)项目资产证券化相关工,查询的结果是:

很像一些文章标题,可能预处理的时候没有对词长做一些限制,感兴趣的同学可以详细统计一下这份词向量的词长分布。当然,少量的 bad case 不会降低这份难得的中文词向量的质量,也不会降低我们玩转这份词向量的兴趣,继续测试一些词或者短语。例如输入"相似词 马化腾"、"相似词 马云",会得到:

输入"相似词 深度学习"、"相似词 人工智能"会得到:

输入"相似词 AI"、"相似词 NLP"会得到:

当然,要是输入的"词条"没有在这份词库中,AINLP的聊天机器人无名也无能为力了,例如输入"词向量","AINLP",那是没有的:

需要说明的是,这里的查询功能间接借助了gensim word2vec 的相关接口,在腾讯这份词向量说明文档的主页上也有相关的用法提示:Tencent AI Lab Embedding Corpus for Chinese Words and Phrases,可能一些同学早就试验过了。不过对于那些机器资源条件有限的同学,或者不了解词向量、word2vec的同学,这个微信接口还是可以供你们随时查询相近词的,甚至可以给一些查询同义词、近义词或者反义词的同学提供一些线索,当然,从统计学意义上来看这份词向量的查询结果无法做到语言学意义上的准确,但是很有意思,需要自己去甄别。

最后感兴趣的同学可以关注我们的微信公众号AINLP,随时把玩腾讯 AI Lab 的这份词向量:

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:相似词查询:玩转腾讯 AI Lab 中文词向量 http://www.52nlp.cn/?p=11234