zoukankan      html  css  js  c++  java
  • 对deep learning的第一周调研

    下面仅是我的个人认识,说得不正确请轻拍。
    (眼下,我仅仅看了一些deep learning 的review和TOM Mitchell的书《machine learning》中的神经网络一章。认识有限。感觉34讲得一般。勉强一看。

    第五章纯粹是为了做笔记,真的不好表达。看不懂还是看tom的书吧。

    本文的组织:
    1.我对deep learning的整体认识
    2.发展简史
    3.感知器模型
    4.感知器的梯度下降训练方法
    5.反向传播算法(BP)

    1.我对deep learning的整体认识
    deep learning是一类基于人工神经网络的方法总称。

    多层神经网络,由输入层、输出层、还有多层隐藏层构成。

    一般,在神经网络的输入层输入的是对象的基本表示,隐藏层是对象的还有一种特征表示,低层的隐藏层表示对象的低级特征表示,高层的隐藏层表示对象的高级特征表示,每层的特征表示通过层与层之间系数来表征,神经网络就是从低级特征表示中提取出对象的高级特征的,输出层输出对象的详细类型。拿图像识别的列子来说,迭代训练时,就是从输入层输入图像的像素,然后抽取图像的高级特征,不停地改变神经网络的系数使得输入图像的像素在最后的输出层能够输出图像的正确类型(说的比較牵强)。

    2.发展简史
    在20世纪40年代,有人依据神经细胞的执行机制提出了感知器模型(单个人工神经元)。到了20世纪60年代,由于单层的感知器模型表征能力不强。研究热度下降。20世纪80年代,有人提出了反向传播算法,实现了多层网络的训练。但一般都是训练3层的网络。由于训练很多其它层时BP就不够用了。人工神经网络,越多层,它的表征能力就越厉害,隐藏层所须要的节点数也就越少。所以人工神经网络的研究又受到限制了。到了2006年,Hinton大神发表了《Deep belief network》这篇文章,提出了分层训练的方法,使得人工神经网络的研究再次火起来。

    3.感知器模型
    perception
    上图就是感知器的最初模型。

    它分为输入部分:x1,x2,…,xn和各个输入相应的系数w1,w2,…,wn(亦称权向量)还有阈值w0,以及激活函数o和输出。感知器模型是简单的线性分类模型,当输入的线性组合(w1.x1+w2.x2+…+wn.xn)大于阈值(w0)时,激活函数输出1,否则输出-1。

    假设把w0也归为一个输入的系数,那么上图中的公式就能够解释通了。当扔数据进去训练数据,调整好感知器的系数后,感知器就成为一个实用的分类器。例如以下图:激活函数就是那条直线。
    这里写图片描写叙述
    感知器模型仅仅能表征线性方差,不能表征非线性函数,注定是要被改进的。

    4.感知器的梯度下降训练方法
    对感知器的训练的就是学习最合适的系数,使得系数能够最好地表征激活函数,或者说使得感知器相对于某固定的训练样本的误差最小。


    用数学来表达是这种:
    激活函数表达为:o=w0+w1.x1+…+wn.xn
    误差用公式这里写图片描写叙述表示。当中,D是训练例子集合,td是训练例子d的目标输出。od是感知器对训练例子d的输出。
    那么如今的任务就是调整函数使得E达到最小。


    这事实上是一个优化问题。


    假设如今仅仅有两个系数w0和w1。那么E和w0和w1的关系例如以下图:
    这里写图片描写叙述
    箭头显示该点的梯度的相反方向。指出了在w0和w1平面中沿误差曲面最陡峭的方向。从图中能够看出仅仅要沿着这个方向就能下降就能到误差曲面中误差E最小的那一点。
    怎么办?
    为了最小化E,从一个随意的初始权向量開始,然后以非常小的步伐改动这个向量。

    每一步都沿着误差曲面产生最陡峭下降的方向改动权向量。循环这个过程直到E最小。


    梯度求法例如以下图:
    这里写图片描写叙述
    每次的改动:这里写图片描写叙述当中。这里写图片描写叙述

    5.反向传播算法(BP)
    多个线性单元的连接仍产生线性函数,而我们更希望得到能表征非线性函数的网络。感知器模型是做不到了,可是sigmoid单元能够。sigmoid单元将用作BP算法训练的神经网络的神经元。
    与感知器模型不同的是,sigmoid单元的激活函数换了而已。例如以下图
    这里写图片描写叙述

    好了。回到BP算法上来。
    多层网络,如图:这里写图片描写叙述
    BP是如何训练多层网络的?
    答:还是用梯度下降方法,仅仅只是改进了一下。
    BP既然是用梯度下降方法的改进来训练多层网络,那么误差E是如何定义的呢?
    答:这里写图片描写叙述
    当中,outputs是网络输出单元的集合。tkd是训练例子d在第k个输出单元的目标输出值。okd是训练例子在第k个输出单元的实际输出值。对于网络的每一个输出单元(最后一层的单元)k,它的误差项为这里写图片描写叙述
    对于以上E的定义发问,隐藏层的神经元有目标输出值这么个定义吗?假设没有。那么E有是怎么定义的?
    答:对于每一个隐藏单元h。它的误差项为 这里写图片描写叙述。由于训练例子仅对网络的输出提供了目标值tk,所以缺少直接的目标值来计算隐藏单元的误差值。因此採取下面间接办法计算隐藏单元的误差项:对受隐藏单元h影响的每一个单元的误差δk进行加权求和。每一个误差δk权值为wkh,wkh就是从隐藏单元h到输出单元k的权值。这个权值刻画了隐藏单元h对于输出单元k的误差应“负责”的程度。

    那么。终于每一个权值就能够按这个公式更新了:这里写图片描写叙述,当中,这里写图片描写叙述
    以上说的yita都是学习率。

  • 相关阅读:
    解决clipboard.js在移动端复制失败的问题
    在HTML中使用JavaScript(浏览器对js的加载机制分析)
    前端mv框架下(目前写的是vue),对组件抽象的思考
    github在不同电脑上协同开发
    日语五十音图快速记忆法——看了这个,真的很好记
    Day2 CSE101 L2
    PRISM概率模型检测器初使用骰子模型
    PRISM概率模型检测器初使用(2)嵌入式控制系统模型
    Day1 CSE101 L1
    prism model check 的环境安装设置
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7372808.html
Copyright © 2011-2022 走看看