0

A glimpse of Markov property

Markov property is a core property in Markov Process, understanding it will give you a broader horizon on Reinforcement Learning. It’s simple that Markov Process doesn’t care about the past, however it is the past that definite the present, which means present is the outcome of the past. Nevertheless, the only thing we should do is focus on the present, because the present will be the past.

So, what we should take into consideration? Remembering all the past is not a ideal method, we should summarize them. From Sutton’s book “What we would like, ideally, is a state signal that summarize past sensation compactly, yet in such a way that all relevant information is retained. … A state signal that succeeds in retaining all relevant information is said to be Markov, or to have Markov property.”

0

TensorFlow修炼手册(2)——模型的保存和恢复

TensorFlow中,利用TensorFlow训练好了模型之后,我们需要保存模型参数,然后加入到产品当中,这样,当有新的数据来了之后,算法不用重新训练,而是利用训练好的模型的参数,这样,即使是浏览器也可以写JavaScript跑深度学习的应用了。总的来说,我们需要创建tf.train.Saver对象的实例来调用saverestore两个方法分别来保存和恢复模型。通过学习总结如下

模型的保存

调用tf.train.Saver() 创建一个Saver 来管理模型参数,代码如下

Continue Reading

0

Words as Vectors

这篇博客是iksnic的博客Words as Vectors的翻译,部分翻译有做改动,如有翻译不当的地方,请在评论区提出。下面是译文。

向量空间模型是信息检索中非常有名的模型,该模型中每个文档被当做是一个向量。向量中的元素表示对应的单词在文档中的权重或重要程度,利用余弦相似度可以计算两个文档之间的相似度。

虽然使用向量来表示单词的方法已经出现了一段时间,但是把单词映射到向量的词嵌套技术已经兴起。其中Tomáš Mikolov的 Word2vec算法影响很大,该算法使用大量文本来产生低(原文是high,但是我举得词嵌套的矩阵的维度相对词典的维度来说是低维度)维度(50-300)来表示单词以及在获得没有借助外部标注下获得单词与单词之间的关系。这种表示方法也获取了语言的规律,比如它通过向量操作vec(‘Paris’) – vec(‘France’) + vec(‘Italy’)产生一个向量来近似表示vec(‘Rome’)

如下图所示,word2vec算法使用单隐藏层的全连接神经网络,如下图所示。隐藏层的神经元是线性神经元,而输入层的神经元的数量和训练数据的单词的数量一致。隐藏层的大小与最后词向量的维度一致,输出层的维度和输入层维度一致。因此,假设需要学习的词向量包含$V$个单词以及每个词向量有$N$维,从输入层到隐藏层之间的权重可以用$V \times N$的权重矩阵$WI$表示,其中每一行表示一个单词,同样从隐藏层到输出层的权重矩阵是一个$N \times V$的矩阵$WO$,其中每一列表示词典中的一个单词。网络的输入使用one-hot encoding表示,也即在输入向量中只有对应的单词是$1$其他的都是$0$。

word2vec的网络结构

Continue Reading

0

TensorFlow修炼手册(1)——基础入门

TensorFlow是一个使用图计算的一个通用的数值计算的框架,图中的节点表示数学操作,而图的边表示操作之间的多维数据(张量,tensor)。TensorFlow的架构很灵活而且富有可拓展性,它可以部署在多核CPU或者是GPU上,不管是台式机,服务器,亦或是移动设备,只要利用它的简单的API,就能很好的在这些平台上运算。TensorFlow最初是由Google’s Machine Intelligence research organization的Google Brain团队为了实现机器学习和深度研究而开发的,但是TensorFlow在其他的领域也能够产生广泛的运用,目前已经开源

tensorflow

TensorFlow

Continue Reading

0

卷积神经网络(1)——基本概念

这是我的第一篇介绍卷积网络的博客,卷积神经网络(Convolutional Neural Networks)不单单比人工神经网络有更多的层数,而且它的每一层有不同的设计,相比人工神经网络每一层是对每个像素点进行描述,CNN的每一层对图片的作用是不同的,有些层“看”图片的轮廓,有些层“看”图片的颜色,有些层“看”图片的形状等等。CNN在图像处理方面具有非常强大的分类和识别能力。下面介绍CNN的基本的概念,主要内容如下

  • 卷积层
    • Local receptive fields
      • Patch/Kernel/Filter
      • Width
      • Depth
      • Padding
      • Stride
      • Shared weights(共享权重)
    • Feature map
    • ReLU
  • 池化层
    • Pooling(池化/下采样)
  • 全连接层(Full Connected Layer)

继续写这篇文章,我忽然发现我有点心虚,因为毕竟自己所学尚浅,天资愚笨,而且笨嘴拙舌,怕不能把所学的内容将清除,误人子弟,因此如果读者发现有错,请及时在评论区提出。

基本的卷积神经网络一般有卷积层,ReLU层,池化层以及全连接层这几个部分,在很多时候,ReLU层都是和卷积层合并统称为卷积层。如下图所示

convnet

图片来自:http://cs231n.github.io/assets/cnn/convnet.jpeg

Continue Reading

0

神经网络权重的初始化

最近在学习神经网络和深度学习的时候遇到了权重初始化的问题,权重的初始化影响到了算法的学习速度,在初始化权重的时候应该从均值为$0$,方差为${1}/{\sqrt{n_{in}}}$的正态分布中去随机初始化,其中$n_{in}$为输入神经元的数量。下面就来讨论原因。

在权重初始化的时候,我们一般会从标准正态分布$\omega\sim\mathcal{N}(0, 1)$中去随机生产权重,然后从标准正态分布中去随机产生偏置$b$,为了说明问题,这里举个例子,假设我们有$1000$个输入神经元,如下图所示,然后我们和输入层相连的第一个隐藏层的第一个神经元。

2016-11-28_212430http://neuralnetworksanddeeplearning.com/images/tikz32.png

图片来自:http://neuralnetworksanddeeplearning.com/images/tikz32.png

Continue Reading

0

Windows下安装xgboost库

xgboost是一个很强大的开源库,在Linux下安装还是很简单的,但是在Windows下安装比较麻烦一些,需要安装MinGW-w64,然后我们利用mingw32-make.exe编译器来编译xgboost

第一步 安装MinGW-w64

https://sourceforge.net/projects/mingw-w64/ 这个是安装文件的地址,下载下来的exe文件是在线安装的,这里我们使用离线安装包安装,这里我使用64位的版本,下载地址为:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/,选择最新的版本,然后选择posix版本的,然后进入seh的目录,选择第一个下载即可。地址为:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/6.2.0/threads-posix/seh/

下载完之后解压,然后进入bin目录,把bin目录添加到环境变量中,添加完了之后,打开powershell,输入mingw32-make.exe,如果显示如下内容表示安装成功

Continue Reading