从去年暑假开始接触神经网络,自己研究的方向是基于深度学习的自然语言处理,在这个过程中,接触了许多教程、论文、编程框架,断断续续,今天把前段时间学习过的内容、学习路线稍微总结一下,也为刚刚接触神经网络的朋友提供一些可借鉴的参考。
入门级教程
Neural Network and Deep Learning
说到神经网络入门的教程,首推哈工大SCIR的微信公众号的一个教程,这是他们团队从国外翻译过来的:【《神经网络与深度学习》连载】,已经连载更新完毕。如果你英文程度不错,也可以直接阅读英文原版【Neural Network and Deep Learning】
这个教程的好处在于,它有实打实的源码例子供我们运行:https://github.com/mnielsen/neural-networks-and-deep-learning
它的例子是针对手写字体识别的,数据集是经典的MNIST数据。
UFLDL教程
UFLDL,全称为Unsupervised Feature Learning and Deep Learning,即无监督的特征学习和深度学习。这个教程是斯坦福大学出品,吴恩达主持出品,良心保证,有中英文。
英文教程地址:http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial
中文教程地址:http://ufldl.stanford.edu/wiki/index.php/UFLDL教程
内容比较多、比较杂,我个人是重点看了【神经网络】、【反向传导算法】、【softmax回归】以及【处理大型图像】的内容,【处理大型图像】主要讲的是卷积神经网络CNN,而CNN也能应用于自然语言处理。
总之,哈工大和斯坦福的这两个教程我是结合着一起看的,入门也花了点时间,结合代码看可能会理解更透彻。
自然语言处理教程
用深度学习来弄自然语言处理,首先要向量化文本,这里比较出名的是google出品的word2vec。它可以根据你给的大量语料,训练出一种词语表达方式,用一个几百维的向量来表示一个词语,这样,就方便了词语的数学化表征。
52NLP给出了用word2vec训练中英文维基百科的详细步骤:http://www.52nlp.cn/中英文维基百科语料上的Word2Vec实验
这个博客挺好的,有很多自然语言处理相关的文章。
深度学习教程
有了神经网络的基础,就可以继续看深度学习的模型了。基于自然语言处理,我看了cnn和rnn、lstm和gru这些模型。
CNN模型
我看了这篇论文:《Convolutional Neural Networks for Sentence Classification》,里面有实验,代码在这里:https://github.com/yoonkim/CNN_sentence,跑的是关于影评句子情感分类的例子。需要用到训练好的word2vec数据,https://code.google.com/archive/p/word2vec/ 有的下载,即页面上【Pre-trained word and phrase vectors】,是300维的、谷歌用100万亿左右单词的新闻预料训练好的词向量。
网上很多中文教程基本上都是翻译这篇论文的,可以结合着一起看。
RNN模型
rnn模型是公认的比较适合自然语言处理的模型。
首推【The Unreasonable Effectiveness of Recurrent Neural Networks】这篇博文,一个简单的rnn就能生成效果良好的语言模型,即,通过你给出的语料,训练出和你语料风格类似的句子、语言。作者用他的模型,训练了莎士比亚的作品、linux源码等等,都有令人惊讶的效果。
对应的源码在这里:https://github.com/karpathy/char-rnn 是用lua实现的,如果你对python比较熟悉,可以看:https://gist.github.com/karpathy/d4dee566867f8291f086 (貌似要翻墙)。由于是这个模型是char by char的,直接处理中文可能有问题,我作了一些更改,可以跑中文,训练了一下唐诗,挺好玩的,下次贴上来。
其次可以看RNN的系列教程:【RECURRENT NEURAL NETWORKS TUTORIAL】,有RNN,LSTM和GRU,也有对应的代码实现:https://github.com/dennybritz/rnn-tutorial-rnnlm ,是基于python的,有theano的实现过程。
另外,关于LSTM,【Understanding LSTM Networks】 这篇博文讲的很棒。
深度学习框架
我平时用python比较多,所以接触的框架基本上是python的。
theano
官方文档:http://deeplearning.net/software/theano/
配置是个麻烦事,多搜索,多尝试,总能配成功。
我对这个框架还不是很熟悉,它的编程模式和一般的不太一样,不过熟悉了这种框架之后,能很方便的对你的模型进行修改。
TensorFlow
官方文档:https://www.tensorflow.org/
谷歌出品,没用过,暂不评价。不过强大。
keras
theano和tensorflow的高级封装,用python实现,适合快速实现模型。
官方文档:https://keras.io/
中文文档:http://keras-cn.readthedocs.io/en/latest/
还有很多别的框架,就不一一介绍了。
飞飞赞,来踩一下。
哈哈哈哈你来了
牛逼啊