究竟什么是Word2vec ? Skip-Gram模型和Continuous Bag of Words(CBOW)模型 ?

上一期的Pycon 2016 tensorflow 研讨会总结 — tensorflow 手把手入门 #第二讲 中, 谈到过word2vec, 但是究竟什么是Word2vec ? 以及skip-Gram模型和CBOW模型究竟是什么? 也许还有小伙伴不是很明白, 这一次我们来好好讲一下这两种word2vec:

  • 连续Bag-of-Words (COBW)
    • 从上下文来预测一个文字
  •  Skip-Gram
    • 从一个文字来预测上下文

其实, 用一个向量唯一标识一个word已经提出有一段时间了. Tomáš Mikolov 的word2vec算法的一个不同之处在于, 他把一个word映射到高维(50到300维), 并且在这个维度上有了很多有意思的语言学特性, 比如单词”Rome”的表达vec(‘Rome’), 可以是vec(‘Paris’) – vec(‘France’) + vec(‘Italy’)的计算结果.

接下来, 上word2vec示意图:

screen-shot-2015-04-10-at-4-16-00-pm

很显然, word2vec是只有一个隐层的全连接神经网络, 用来预测给定单词的关联度大的单词. 继续阅读究竟什么是Word2vec ? Skip-Gram模型和Continuous Bag of Words(CBOW)模型 ?

重磅: php weekly, pycoders weekly 收集数据集合 开放下载

今天David 9 给大家开放一个很棒的数据集, 收集了迄今为止的phpweekly和pycoders上的所有HTML数据, 不可多得的技术引导.

http://www.phpweekly.com/

http://pycoders.com/

项目地址:

https://github.com/yanchao727/crawl_pycoder

phpweekly 所有数据路径: https://github.com/yanchao727/crawl_pycoder/tree/master/crawl_pycoder/spiders/php_weekly_dump

pycoders 所有数据路径:

https://github.com/yanchao727/crawl_pycoder/tree/master/crawl_pycoder/spiders/content

Pycon 2016 tensorflow 研讨会总结 — tensorflow 手把手入门 #第二讲 word2vec

上一期我们讲到Pycon 2016 tensorflow 研讨会总结 — tensorflow 手把手入门 #第一讲 . 今天是我们第二讲, 来趴一趴word2vec.

什么是word2vec?

用来学习文字向量表达的模型 (相关文本文字的的特征向量).

  • 向量空间模型解决了NLP中数据稀疏问题, 如果文字是离散的. 即, 把文字映射到相邻的空间点上.

立刻上图感受一下word2vec:

1

Untitled

这里看看与文字’Cat’接近的词汇, 一目了然啊~如果一定要给’cat’一个向量描述, 上图左边这一列特征和权重是不是挺合理的呢? 嘿嘿~~~ 继续阅读Pycon 2016 tensorflow 研讨会总结 — tensorflow 手把手入门 #第二讲 word2vec

Pycon 2016 tensorflow 研讨会总结 — tensorflow 手把手入门 #第一讲

一直想专门做一期关于Tensorflow的blog,这次终于有机会啦。这篇文章David 9打算手把手教大家入门Tensorflow,带大家总结Pycon 2016 tensorflow 研讨会:https://www.youtube.com/watch?v=GZBIPwdGtkk , 并且为大家解读第一个tensorflow例程. 另外, 文末有演讲PPT下载哦 !

什么是Tensorflow ?

Tensorflow是Google大脑团队开源的机器学习计算训练框架.

tensorflow
tensorflow

有几个重要点: 继续阅读Pycon 2016 tensorflow 研讨会总结 — tensorflow 手把手入门 #第一讲

深度学习中的激活函数导引–“深度学习大讲堂”微信公众号授权转载

最近读到一篇很不错的讲激活函数的文章,迫不及待地联系公众号,得到的转载允许,由David 9带给大家:

摘要

近年来,深度学习在计算机视觉领域取得了引人注目的成果,其中一个重要因素是激活函数的发展。新型激活函数ReLU克服了梯度消失,使得深度网络的直接监督式训练成为可能。本文将对激活函数的历史和近期进展进行总结和概括。

激活函数的定义与作用

在人工神经网络中,神经元节点的激活函数定义了对神经元输出的映射,简单来说,神经元的输出(例如,全连接网络中就是输入向量与权重向量的内积再加上偏置项)经过激活函数处理后再作为输出。加拿大蒙特利尔大学的Bengio教授在 ICML 2016 的文章[1]中给出了激活函数的定义:激活函数是映射 h:R→R,且几乎处处可导。
神经网络中激活函数的主要作用是提供网络的非线性建模能力,如不特别说明,激活函数一般而言是非线性函数。假设一个示例神经网络中仅包含线性卷积和全连接运算,那么该网络仅能够表达线性映射,即便增加网络的深度也依旧还是线性映射,难以有效建模实际环境中非线性分布的数据。加入(非线性)激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。因此,激活函数是深度神经网络中不可或缺的部分。

激活函数的历史发展与近期进展

从定义来看,几乎所有的连续可导函数都可以用作激活函数。但目前常见的多是分段线性和具有指数形状的非线性函数。下文将依次对它们进行总结。

Sigmoid

Sigmoid 是使用范围最广的一类激活函数,具有指数函数形状 。正式定义为:

QQ截图20160802113124

QQ截图20160802113344 继续阅读深度学习中的激活函数导引–“深度学习大讲堂”微信公众号授权转载

神经网络抵制过拟合神器:Dropout 手把手论文入门 — 深度学习 DL 番外篇

今天David 9要带大家读偶像Hinton等大牛的一篇论文,搞深度学习或者DL的朋友应该知道,那就是有名的Dropout方法。

学过神经网络的童鞋应该知道神经网络很容易过拟合。而且,如果要用集成学习的思想去训练非常多个神经网络,集成起来抵制过拟合,这样开销非常大并且也不一定有效。于是,这群大神提出了Dropout方法:在神经网络训练时,随机把一些神经单元去除,“瘦身”后的神经网络继续训练,最后的模型,是保留所有神经单元,但是神经的连接权重\(w\)乘上了一个刚才随机去除指数\(p\).

废话少说,上原理图:

QQ截图20160729101338

左边是标准神经网络,右边是使用Dropout的神经网络,可见只是连接度少了一些,并不影响模型继续训练。其实,Dropout动机和初衷非常有意思。 继续阅读神经网络抵制过拟合神器:Dropout 手把手论文入门 — 深度学习 DL 番外篇

#7 每个人都能徒手写递归神经网络–手把手教你写一个RNN

总结: 我总是从迷你程序中学到很多。这个教程用python写了一个很简单迷你程序讲解递归神经网络。

递归神经网络即RNN和一般神经网络有什么不同?出门左转我们一篇博客已经讲过了传统的神经网络不能够基于前面的已分类场景来推断接下来的场景分类,但是RNN确有一定记忆功能。废话少说,上图:

basic_recurrence_singleton 继续阅读#7 每个人都能徒手写递归神经网络–手把手教你写一个RNN