神经网络抵制过拟合神器: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?

Python高级图像处理–反向图片搜索

David 9 博客没有专门分享过机器视觉,或者图像处理的文章,但是,上周2016年计算机识别大会(CVPR 2016)在拉斯维加斯举办了,借着这个契机我们分享一篇好文:Advanced Image Processing with Python ,希望大家喜欢。

建立图像处理搜索引擎不是一项简单的工作。 有太多的概念,统计,想法和技术需要深入。其中一个重要的图像处理概念是“反向图片查询” (RIQ) 或者说“反向图片搜索”。 谷歌,Cloudera,Sumo Logic和Birst是一些使用RIQ的知名组织。RIQ提供了好的方法去分析图像,并且利用数据挖掘。

知名公司和反向图片搜索

许多公司使用RIQ来达成他们的需求。比如Pinterest在2014年首次引入基于图像的搜索。随后在2015年出了白皮书展示架构。反向图片搜索使得Pinterest能够从时尚对象获得图像特征,并且展示相似产品推荐。

众所周知,谷歌反向图片搜索使得用户可以上传一张图片,然后搜索类似图片。上传的图片经过分析和模型计算。图片与成千上万的图片做对比然后匹配返回结果。

这里是一张来自OpenCV2.4.9的特征对比报告:

search-engine-graph

算法和Python库  

在我们开始工作前,让我们来看看Python图像处理搜索引擎的主要元素。

专利算法

SIFT(Scale-Invariant Feature Transform)弹性不变特征转换算法

  1. 专利收费算法,可以用图片识别器识别相似图片,甚至可以从不同角度,尺寸,深度和拉伸识别搜索结果。在这里你可以查看详细视频。
  1. SIFT在一个大的数据库特征上非常多的图片都正确地达到了一定搜索精度。

继续阅读Python高级图像处理–反向图片搜索