深度学习笔记(一)感知器

刚忙完一个项目,最近时间相对比较多,上午一般对spark的源码分析,下午研究深度学习,spark源码分析文档在公司写的,没法外传,下午深度学习没有写博客,晚上写一个系列。

这个系列主要是针对这对时间的对深度学习写一个备忘录,同时加深一点印象。所有的内容都是在网上,书上看到的,我只是做一些终结和看法。

1)深度学习发展历史:
深度学习笔记(一)感知器_第1张图片


这一章节主要分析感知器:
发展:
1958年Rosenblatt发明的感知器(perceptron)算法
结束:
1969年,美国数学家及人工算法先驱Minsky在其著作中证明了感知器本质上是一种线性模型,只能处理线性分类问题,就连最简单的XOR(亦或)问题都无法正确分类

问题1)为啥XOR是非线性的
如图:对于输入(1,0),(0,1),(1,1),(0,0)会产生如下结果,如果能用一条直线将数据分为两类,这是线性问题,对于XOR无法实现。
深度学习笔记(一)感知器_第2张图片

    XOR problem which is nor linearly seperable data orientation



2)感知器结构:

深度学习笔记(一)感知器_第3张图片 深度学习笔记(一)感知器_第4张图片
对于上述的单层感知怎么求解呢?
深度学习笔记(一)感知器_第5张图片
 
感知器的代码很简单,我也写了一个java版本的and操作,但是在公司没法带出。

百度一下,很多代码,可以自己写一个。


问题2)为什么神经网络能够识别

一、神经网络是由一层一层构建的,那么每层究竟在做什么?

神经网络的函数

  •  Y=a*(W*X+b)
    • 1
    • 1

    其中Y是输出量,X是输入量,a()是一个激活函数,W是权重矩阵,b是偏置向量。每一层都是通过该公式简单的得到输出Y。数学理解:通过如下5种对输入空间(输入向量的集合)的操作,完成 输入空间—>输出空间的变换(矩阵的行空间到列空间)。


  • 注:用“空间”二字是指被分类的并不是单个事物,而是一类事物。空间是指这类事物所有个体的集合。

    • 1. 升维/降维
    • 2. 放大/缩小
    • 3. 旋转
    • 4. 平移
    • 5. “弯曲”

      深度学习笔记(一)感知器_第6张图片

      这5种操作中,1,2,3的操作由 完成,4的操作是由 完成,5的操作则是由 来实现。



每层的数学理解:用线性变换跟随着非线性变化,将输入空间投向另一个空间。

+

  • 物理理解:对 的理解就是通过组合形成新物质。 又符合了我们所处的世界都是非线性的特点。

    +

    • 假想情景: 是二维向量,维度是碳原子和氧原子的数量 ,数值且定为 。若确定 是三维向量,就会形成如下网络的形状 (神经网络的每个节点表示一个维度)。通过改变权重的值,可以获得若干个不同物质。右侧的节点数决定了想要获得多少种不同的新物质(矩阵的行数)。

      +深度学习笔记(一)感知器_第7张图片

      • 若权重 的数值如(1),那么网络的输出 就会是三个新物质,[二氧化碳,臭氧,一氧化碳]。

        +

      • 若减少右侧的一个节点,并改变权重 至(2),那输出 就会是两个新物质, 。

        +

      • 若再加一层,就是再次通过组合 这三种基础物质,形成若干个更高层的物质。

        +

      • 若希望通过层网络能够从[C, O]空间转变到 空间的话,那么网络的学习过程就是将 的数值变成尽可能接近(1)的过程 。
      • 重要的是这种组合思想,组合成的东西在神经网络中并不需要有物理意义,可以是抽象概念。

每层神经网络的物理理解:通过现有的不同物质的组合形成新物质。



问题3 为啥感知器为什么处理不了非线性问题


回到这个问题很简单

对于感知器Y=a*(W*X+b)

  • 1. 升维/降维
  • 2. 放大/缩小
  • 3. 旋转
  • 4. 平移
  • 5. “弯曲”

前面4步都只是线性变化,
第五步,因为激励函数是 x>0?1:0 ,这个也只是一种特定的变化而已。无法处理非线性问题。
如果将激励函数改用 x>0?x:0 就可以实现一些非线性问题了,

下一个章节将介绍神经网络。

你可能感兴趣的:(深度学习)