#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高级图像处理–反向图片搜索

#6 理解 LSTM 网络

循环神经网络(RNN)

人们的每次思考并不都是从零开始的。比如你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始。你的记忆是有持久性的。

传统的神经网络并不能如此,这似乎是一个主要的缺点。例如,假设你在看一场电影,你想对电影里的每一个场景进行分类。传统的神经网络不能够基于前面的已分类场景来推断接下来的场景分类。

循环神经网络(Recurrent Neural Networks)解决了这个问题。这种神经网络带有环,可以将信息持久化。

14585451475265 继续阅读#6 理解 LSTM 网络

#5 Deep learning RNN-RBM简单理解

前言:

本文主要是bengio的deep learning tutorial教程主页中最后一个sample:rnn-rbm in polyphonic music. 即用RNN-RBM来model复调音乐,训练过程中采用的是midi格式的音频文件,接着用建好的model来产生复调音乐。对音乐建模的难点在与每首乐曲中帧间是高度时间相关的(这样样本的维度会很高),用普通的网络模型是不能搞定的(普通设计网络模型没有考虑时间维度,图模型中的HMM有这方面的能力),这种情况下可以采用RNN来处理,这里的RNN为recurrent neural network中文为循环神经网络,另外还有一种RNN为recursive neural network翻为递归神经网络。本文中指的是循环神经网络。

 

RNN简单介绍:

首先来看RNN和普通的feed-forward网络有什么不同。RNN的网络框架如下:

23214434-ef7947ebef344d86b21e0d0550dc833d 继续阅读#5 Deep learning RNN-RBM简单理解

重要python工具-代码质量篇

作为一名开发者,无论是不是在IDE或者命令行,你应该使用那些有用的工具库武装自己。如果你没有考虑代码干净、可读和可维护性,你就很可能看不到一些工具的好处。

python禅道

% python -m this

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
...

继续阅读重要python工具-代码质量篇