深度网络的框架结构

深度网络的框架结构

神经网络基础

神经网络起源

神经网络起源于对大脑皮层的研究,神纤细胞的轴突末梢(也就是终端)->神经细胞=处理端f(x)。

\begin{split}\begin{figure}[htp!]
  \centering
  \includegraphics[width=6cm]{neutral}\\
    \caption{神经元}
\end{figure}\end{split}
\begin{split}\begin{figure}[htp!]  \centering  \includegraphics[width=6cm]{neutral}\\    \caption{神经元}\end{figure}\end{split}

大脑特征:

  1. 大脑皮层具有 分布式 并行的特点,
  2. 最后的输出具有归纳和推广功能。
  3. 神经输出按照激活(fire)和不激活两种选择。
\begin{split}\begin{figure}[htp!]
  \centering
  \includegraphics[width=6cm]{NN.jpg}\\
  \caption{神经网络基本结构}
\end{figure}\end{split}
\begin{split}\begin{figure}[htp!]  \centering  \includegraphics[width=6cm]{NN.jpg}\\  \caption{神经网络基本结构}\end{figure}\end{split}

虽然神经网络具有复杂的结构,但是只是简单人脑的模拟,成为人工智能(ANN),利用f(x) 模拟人脑思考中的非线性。

大脑模型:

digraph G {rankdir=LRMemory1->Predict[label="feature1:Color"]Memory2->Predict [label="feature2:Construct"]Memory3->Predict [label="feature2:3D information"]Memory4->Predict [label="feature3:spatial and time seires information"]Predict->Output}

这里的time series 着的是多层之间吗?input

人工智能的未来

大脑是使用记忆来创造的世界,大脑用记忆模型来预测未来,目前的深度学习也体现了这一点。

大脑和计算完全不同,大脑不是靠计算来解决掉问题,而是通过记忆来解决问题。

Backpropgation

整个就是一个链式求偏导的过程。 \frac{{\PartialC}{W}}\frac{{\PartialC}{W}} 另外就是图论中所有路径最短的问题。

  1. 从整个学习上说,就是一个偏导函数量。要解决的一个问题包括两方面:第一个是学习速度问题,第二个是防止震荡。目前用的都是基于导数的优化。
  2. 受到cost函数影响是约束问题的松和紧。 cost , activate MSE(最小二乘),线性的max 函数 cross-entropy, sigmoid函数 log-likelihood, softmax函数。
  3. 超参数的估计,目前是过拟合产生一个主要原因。
  4. 具体采用哪一种组合呢,就看你采用哪一种解析了,如果想用要概率模型就要用softmax组合。

单层神经网络(前向传播)

假设C类,N个训练样本的结果。

EN=12n=1Nk=1C(tnkynk)2 EN=12∑n=1N∑k=1C(tkn−ykn)2

这里  tnk tkn 表示第n个样本对应的标签的第k维。  ynk ykn 表示第n个样本对应的网络输出的第k 个输出。

对于样本n的误差可以表示为:

En=12Ck=1(tnkynk)2=12||tnyn||22 En=12∑k=1C(tkn−ykn)2=12||tn−yn||22

那么l层的误差可以表示为:

n=12Ck=1(tnkynk)2=12||tnyn||22 n=12∑k=1C(tkn−ykn)2=12||tn−yn||22

对于传统的神经网络需要计算网络关于每一个权值的偏导数。我们用l表示当前层,那么当前层的输出可以表示为:

l=f(ul)s.t.ul=Wlxl1+bl l=f(ul)s.t.ul=Wlxl−1+bl

这里  xl xl 是下一层的输入,这一层的输出。

输出激活函数  f(.) f(.) 可以有很多中,一般是sigmoid函数或者双曲线正切函数。意思是把他们进行分类。

digraph logistic_regress {node [shape = box]rankdir=LR;{node [shape=circle, style=invis]1 2 3 4 5}{ node [shape=point,width=0]inputdummy1dummy2dummy3}{ rank=same;posibity cost}{1 2 3 4 5}-> input-> function -> posibity -> dummy1 -> prediction -> output [weight=8];dummy1->dummy2 [weight=8]{ rank=same;dummy2 -> cost  [splines="ortho"]cost -> dummy3 ;}dummy3-> input [weight=8]}

后向传导算法(BP算法)

每一层采用最小均方误差(LMS)模型,采用梯度下降法得到梯度,进而逐层传播到前向网络中去。

Eb=Euub=δ ∂E∂b=∂E∂u∂u∂b=δ

因为  ub=1 ∂u∂b=1, 所以  Eb=Eu=δ ∂E∂b=∂E∂u=δ, 得到后向反馈的灵敏度:

δl=(Wl+1)Tδl+1f(ul) δl=(Wl+1)Tδl+1∘f′(ul)

这个模型在无限次迭代中趋于0,也就是没有价值。

输出层的神经元的灵敏度是不一样的:

δL=f(uL)(yntn) δL=f′(uL)∘(yn−tn)

神经网络就是利用多层信息进行非线性拟合。

权值更新可以表示为:

EWl=Xl1(δl)T ∂E∂Wl=Xl−1(δl)T
ΔWl=ηEWl ΔWl=−η∂E∂Wl

就是首先求最后一层的误差,逐步扩展到前一层。

实际中对数据训练都是首先前向传导求出实际输出Op,然后和理想输出做对比。得到对比函数,最后使用后向传导调整权值。

容量度量

深度网络能够识别分类多少信息?也就是如何度量一个网络的识别能力。

深度网络拓扑结构

digraph{   a [label="初始层"]   b [label="隐层1(中层特征:边缘??)"]   c [label="隐层2(高层特征:shape?)"]   d [label="决策层"]   a->b  [label="卷积层"]   c->b  [label="auto-coder"]   b->d  [label="跨层网络实现多尺度特征"]   b->c  [label="使用sparse coding层层抽象"]   c->d  [label="全局特征决策"]}

神经元结构

  1. 神经元从结构功能上来说:包括感知神经元和激活神经元。
  2. 从感知神经元包括:线性的,卷积,限制玻尔兹曼机。
  3. 激活函数包括(只要是连续即可):sigmod,tanh,softmax,retified linear 。

每一种结构都是基于数学推理或者仿生学的原理。 并且网络能够自动的组成连接的拓扑,这才是人脑的过程。并且是动态的。 而现在的网络是静态的过程。

网络框架

  1. 基于限制波尔兹曼机
    • 卷积限制玻欠兹曼机
    • 三阶因子玻尔兹曼机
  2. 基于自编码
    • 去噪自编码器
    • 变换自编码器
  3. 卷积神经网络
    • 卷积神经网络
    • 卷积分解神经网络

卷积神经网络

卷积神经网络里,简单的理解那就是每一层的Filter如选,以及Pooling的大小如何选。最后要这些每一层的信息都要传递给决策层。

不管什么神经网络最后都链接上一个MLP来做判决的。

Normalization

各种各样的白平衡,对比度,去除噪声等等。来解决各种光照的影响。

Filter Bank

来解决尺寸的问题, 投影变换

Non-Linearity

主要是稀疏化,饱和,latel inhibition.

Pooling

实际就是聚合的过程, aggregation over space or feature type.

就是分块,然后用一点来代表这一块。什么样的映射更好,有什么更好的抽样理论或者压缩理论在这里。

神经网络知识本身就那些参数空间,其实就也是各种映射,如果找到有逆射那就更好了。

算法优点:

  1. 针对图像中的像素点进行操作,通过卷积和下采样交替进行,在图像分类和识别中有重要应用。
  2. 采用感受野和权值共享达到减小隐藏层的目的,同时起到旋转不变的作用。
  3. down-sampling 达到减小分辨力的作用,同时也减小运算量。
  4. 最后在经过 logistic regression 判断求所有layers的parameters。 %RED% 不难,建立一个cost函数,然后直接梯度计算%ENDCOLOR%

除了卷积网络本身还有什么方法可以来减少的连接数的。

\begin{split}\begin{figure}
  \centering
  \includegraphics[width=4cm]{CNN.jpg}\\
  \caption{卷积神经网络}
\end{figure}\end{split}
\begin{split}\begin{figure}  \centering  \includegraphics[width=4cm]{CNN.jpg}\\  \caption{卷积神经网络}\end{figure}\end{split}
xlj=f(iMjxl1iklij+blj) xjl=f(∑i∈Mjxil−1∗kijl+bjl)

其中  Mj Mj 表示选择的输入maps的集合。(对于图像处理,是获取边缘信息。)

此时的灵敏度可以表示为:

δlj=βl+1j(up(δl+1)f(ulj)) δjl=βjl+1(up(δl+1)∘f′(ujl))

up(.)表示上采样操作。

Sub-sampling Layers 子采样层

xlj=f(βljdown(xl1j)+blj) xjl=f(βjldown(xjl−1)+bjl)

其中  down(.) down(.) 表示下采样函数。

digraph CNN{rankdir=LRnode[shape=box]subgraph clusterA {x_1->y_1 [label="w_11"]x_2->y_1  [label="w_21"]x_2->y_2  [label="w_22"]x_3->y_2  [label="w_32"]label="layer1"subgraph clusterB { y_1y_2label="layer 2 maxpooling"}}y_1->yy_2->y}

照片实别的过程

组成

卷积类型,每一次池化的大小,都是要原因的。池化的大小是不是可以用采用定理来决定 。

每一部都是这么实现了。

能量模型

EBM通过对变量的每个配置施加一个有范围限制的能量来捕获变量之间的依赖 关系。EBM有两个主要的任务,一个是推断(Inference),它主要是在给定观察变量的情况,找到使能量值最小的那些隐变量的配置;另一个是学习(Learning), 它主要是寻找一个恰当的能量函数,使样本中正确的输入输出的能量 比错误的输入输出的能。

这里的能量最小模型,是不是很多事物都要趋近于最小的。 原来的很多东西都是假设首先知道的,然后建立约束函数,在概率不知道的情况下使用能量函数。

能量模型是一种一般性的模型, 在分布未知情况下用能量来表示概率分布:

p(x)=eE(x)Z p(x)=e−E(x)Z

其中Z为规整因子:

Z=xeE(x) Z=∑xe−E(x)
l(θ,D)=L(θ,D)=1Nx(i)Dlogp(x(i)) l(θ,D)=−L(θ,D)=−1N∑x(i)∈Dlog⁡p(x(i))

对  θ θ 求偏导,得到:

Δ=l(θ,D)θ Δ=∂l(θ,D)∂θ

在有些情况下我们需要引进一些没有观察到的变量,隐含变量。为了表示所有包含v的隐含变量,表示成能量相加形式:

P(x)=hP(x,h)=heE(x,h)Z P(x)=∑hP(x,h)=∑he−E(x,h)Z

并进行求导,但是上式中  Z=xeE(x) Z=∑xe−E(x) ,对x进行求导非常困难,因此通过采样方法获得近似值。

因此采用玻尔兹曼机实现,但是BM方法计算量非常大,后来使用RBM模型,在层内无联系。 begin{figure}

centering includegraphics[width=8cm]{wangluotuopu}\ caption{玻尔兹曼机和限制玻尔兹曼机}

end{figure}

限制玻尔兹曼机

限制玻尔兹曼机是一种特殊形式的马尔科夫场,可视层和隐含层不断进行交替迭代,趋于稳定。它输入和输出都是0,1 ,为了方便计算,假设可视层和隐藏层都是满足相互独立,有:

(h|v)=ip(hi|v)p(v|h)=jp(vj|h) (h|v)=∏ip(hi|v)p(v|h)=∏jp(vj|h)

在v and h没有概率的情况下,使用能量函数来表示概率变量的概率密度:其中变量v and h的能量函数可以表示为:

E(v,h)=ipixelsbivijfeaturesbjhji,jvihjwij E(v,h)=−∑i∈pixelsbivi−∑j∈featuresbjhj−∑i,jvihjwij

RBM中使用两层,首先估计隐藏层的概率,然后用随机概率判断隐藏层发生的概率。 这个有吗?

对应的自由能量函数(就是前面的能量模型(对所有每个分量的能量相加、取log)):

F(v)=bviloghiehi(ci+Wiv) F(v)=−b′v−∑ilog⁡∑hiehi(ci+Wiv)

对上式中的h和v进行求导,得到:

隐藏层计算 decoding:

hj=σ(bj+iviwij) hj=σ(bj+∑iviwij)

可视层计算 encoding:

vi=σ(bi+jhjwij) vi=σ(bi+∑jhjwij)

用能量函数对  wij wij 求导,得到:

Δwij=ε(<vihj>data<vihj>recon) Δwij=ε(<vihj>data−<vihj>recon)

其中data是原始输入数据,recon是重构的数据,同样的方法更新  bi bi and  bj bj 。

Gibbs 采样

Gibbs采样是基于马尔科夫链蒙特卡罗(MCMC)的采样方法, 就是当我们无法得到关于X的联合概率密度P(x),可以利用条件马尔科夫条件概率密度来逼近。随着采样次数n的增加,随机变量  [x1(n),x2(n),...xK(n)] [x1(n),x2(n),...xK(n)] 的概率分布以n的几何级数的速度收敛于X的联合概率密度P(X).

因此在执行时,用一个训练样本初始化可见层的状态  v0 v0 ,交替进行如下采样:

h0P(h|v0),v1P(v|h0),h1P(h|v1),v2P(v|h1),....,vk+1P(P(v|h1)) h0∼P(h|v0),v1∼P(v|h0),h1∼P(h|v1),v2∼P(v|h1),....,vk+1∼P(P(v|h1))

对比散度算法

尽管采用GIbbs可以获得联合概率密度,但是对数似然方法,需要较大的采样步数才能保证采样样本服从目标分布,尤其是观测数据的维度比较高时。因此hinton 在2002 提出对比散度方法,只需要k=1步Gibbs 采样便可得到足够的近似。(我想是gibbs采样和梯度方法的结合吧),首先估计出  P(h1j=1|v1)andP(v2i=1|h1) P(h1j=1|v1)andP(v2i=1|h1) , 进而产生一个可见层的重构。然后代入能量度函数更新  w,b w,band  α α 。

HMC模型

HMC模型采样通过动力学方法来获得Hamiltonian 被定位为自身能量和动力学之和:

H(s,ϕ)=E(s)+K(ϕ)=E(s)+12iϕ2i H(s,ϕ)=E(s)+K(ϕ)=E(s)+12∑iϕi2

其中s位置向量,  ϕ ϕ 是速度向量。

HMC通过正则分布采样得到:

p(s,ϕ)=1Zexp(H(s,ϕ))=p(s)p(ϕ) p(s,ϕ)=1Zexp(−H(s,ϕ))=p(s)p(ϕ)

对s and  ϕ ϕ 求导得到:

dsidt=ϕ=ϕi dsidt=∂H∂ϕ=ϕi
dϕdt=Hsi=Esi dϕdt=−∂H∂si=−∂E∂si

leap-frog算法首先使用马尔科夫链,蛙跳速度跳过t时刻的位置而得到  t+0.5δt t+0.5δt 的速度值,而位置跳过  t+0.5δt t+0.5δt 的速度值而得到  t+δt t+δt 的位置值。应该是更新速度比较快。详细参考[[http://clzx.cqjtu.edu.cn/Upload/news/20111108215347281.pdf][分子动力学模拟]]

对于有限次采样导致变量有可能是不可逆的。因此通过Metropolis判断accept/reject 概率:

Pacc(χ,χ1)=min(1,exp(H(s1,ϕ1))exp(H(s,ϕ))) Pacc(χ,χ1)=min(1,exp(−H(s1,ϕ1))exp(−H(s,ϕ)))

Deep Belief Networks深信度网络

DBM是多层RBM。首先使用多层连接的RBM,最后一层使用BP网络(全局性最优的算法),使用后向反馈对前面的隐含层进行微调。

参考:

  1. http://blog.csdn.net/chlele0105/article/details/17309491}{能量模型(EBM)、限制波尔兹曼机(RBM)}
  2. http://blog.csdn.net/mytestmy/article/details/9150213}{深度学习读书笔记之RBM (限制波尔兹曼机}
  3. http://blog.sina.com.cn/s/blog_890c6aa301010oks.html}{关于数学,关于Learning的一些问题HMC}
  4. http://www.docin.com/p-558753215.html 分子动力学和蒙特卡洛模拟
  5. http://blog.csdn.net/chlele0105/article/details/17251971 RBM(限制玻尔兹曼机)、DBN(深度信念网络)介绍
  6. http://blog.csdn.net/yangyangliangliang/article/details/20644853 深度信念网络(DBN)
  7. http://www.cnblogs.com/daniel-D/archive/2013/06/03/3116278.html 反向传导网络BP算法
from: http://deeplearningongpu.readthedocs.org/en/latest/Stage_2.html#id14
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值