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

EM算法

EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法。在之后的MT中的词对齐中也用到了。在Mitchell的书中也提到EM可以用于贝叶斯网络中。

下面主要介绍EM的整个推导过程。

1. Jensen不等式

回顾优化理论中的一些概念。设\(f\)是定义域为实数的函数,如果对于所有的实数\(x\),\(f^{”}(x)\ge0\),那么\(f\)是凸函数。当x是向量时,如果其hessian矩阵H是半正定的(\(H\ge0\)),那么\(f\)是凸函数。如果\(f^{”}(x)>0\)或者\(H>0\), 那么称\(f\)是严格凸函数。

Jensen不等式表述如下:

如果f是凸函数,X是随机变量,那么

\(\mathbb{E}(f(X)) \ge f(\mathbb{E}(X)) \)

特别地,如果\(f\)是严格凸函数,那么\(\mathbb{E}(f(X)) = f(\mathbb{E}(X)) \)当且仅当,也就是说\(X\)是常量。

如果用图表示会很清晰:

201104061615564400 (1) 继续阅读EM算法

15个重要Python面试题 测测你适不适合做Python?

简介

在找一个Python相关工作?很可能你要证明你知道怎么用Python工作。这里有一组和Python使用有关的面试题。关注Python语言本身,而不是框架或包。

这些试题是认真准备的,测试一下,如果你觉得答案很简单,去找份Python工作吧~

问题 1

Python到底是什么样的语言?你可以比较其他技术或者语言来回答你的问题。

回答

这里是一些关键点:Python是解释型语言。这意味着不像C和其他语言,Python运行前不需要编译。其他解释型语言包括PHP和Ruby。

  • Python是动态类型的,这意味着你不需要在声明变量时指定类型。你可以先定义x=111,然后 x=”I’m a string”,一点问题也不会有。
  • Python是面向对象语言,所有允许定义类并且可以继承和组合。Python没有访问访问标识如在C++中的public, private, 这就非常信任程序员的素质,相信每个程序员都是“成人”了~
  • 在Python中,函数是一等公民。这就意味着它们可以被赋值,从其他函数返回值,并且传递函数对象。类不是一等公民。
  • 写Python代码很快,但是跑起来会比编译型语言慢。幸运的是,Python允许使用C扩展写程序,所以瓶颈可以得到处理。Numpy库就是一个很好例子,因为很多代码不是Python直接写的,所以运行很快。
  • Python使用场景很多 – web应用开发,自动化,科学建模,大数据应用,等等。它也经常被看做“胶水”语言,使得不同语言间可以衔接上。
  • Python能够简化工作  ,使得程序员能够关心如何重写代码而不是详细看一遍底层实现。

python 继续阅读15个重要Python面试题 测测你适不适合做Python?