neural networks and deep learning(Michael Nielsen)笔记(1)
2016-06-18 10:43
465 查看
手写阿拉伯数字的识别,对于计算机来说,是个困难的问题,也是深度学习的研究内容之一。这本书就是以此为目标,逐步展开对于深度学习的不同架构和算法的介绍。
感知器的主要组成如下:
多个输入。图中是两个x1和x2 ,可以用向量 x 表示。
权重。每个输入对以一个权重,标示在输入的边上,如w1和w2 ,可以用向量w来表示。
偏移。每个神经元对应一个偏移b,图中是 3。
输出。是一个布尔值,由输入、权重和偏移计算而来,如图中的 output,公式中的点表示向量之间的点乘。
多个感知器组合得到的模型(如图 2 所示),可以计算出任意一种布尔函数。并且感知器通过学习来调整权重和偏移,可以得到无法直接给出定义的布尔函数。
然而,这一思想在感知器上是不可能实现的。因为感知器的输出要么是 0,要么是 1,权重的微小调整会导致输出的大幅度变化(0 和 1 之间的变化)。
为了这个目的,定义了 sigmoid 神经元。与感知器不同的是,sigmoid 函数的输出不再是 0 或 1 两个值之一,而是输入的一个光滑函数,取值范围为 0 和 1 之间的实数。可以理解为一个概率值,越接近于 1 时,表明取 1 的概率越大,越接近于 0 时,表明取 0 的概率越大。Sigmoid 函数σ(wx+b)被定义为:
重要的是函数σ的光滑性,而不是它的具体形式。光滑性保证了权重或者偏移的微小改变会导致函数结果的微小改变,从而为权重和偏移的学习提供了可能。根据微积分原理,可以有以下等式成立。
式子可以表述为:函数输出的改变约等于函数对不同的权重的偏导与该权重的改变之乘积的总和,再加上函数对偏移的偏导与偏导的乘积。换句话说,输出的改变是权重和偏移的改变的线性函数。其中,其重要作用的是函数σ的偏导,也就是它的形状。
因为图像是由 28*28 = 784 个像素点组成,所以输入层有 784 个神经元,每个神经元的值是其对应像素点的灰度。
第二层是隐藏层,隐藏层的神经元数目用 n 来表示。在本次实验中,n = 15。
第三层是输出层,有 10 个神经元,对应 0 到 9 共 10 个数字,其输出值是图片内容为这个数字的概率。
感知器
感知器是由一个神经元组成的模型,如图 1 所示。感知器的主要组成如下:
多个输入。图中是两个x1和x2 ,可以用向量 x 表示。
权重。每个输入对以一个权重,标示在输入的边上,如w1和w2 ,可以用向量w来表示。
偏移。每个神经元对应一个偏移b,图中是 3。
输出。是一个布尔值,由输入、权重和偏移计算而来,如图中的 output,公式中的点表示向量之间的点乘。
多个感知器组合得到的模型(如图 2 所示),可以计算出任意一种布尔函数。并且感知器通过学习来调整权重和偏移,可以得到无法直接给出定义的布尔函数。
Sigmoid 神经元
通过学习来调整感知器中的权重和偏移,进而得到与已知现象吻合的模型,是深度学习中所使用的基本策略。为达到此目的,必须满足以下条件:权重或者偏移的微小改变会引起输出的微小,从而达到通过调整权重来优化模型的目的。该条件的形象化描述如图3。然而,这一思想在感知器上是不可能实现的。因为感知器的输出要么是 0,要么是 1,权重的微小调整会导致输出的大幅度变化(0 和 1 之间的变化)。
为了这个目的,定义了 sigmoid 神经元。与感知器不同的是,sigmoid 函数的输出不再是 0 或 1 两个值之一,而是输入的一个光滑函数,取值范围为 0 和 1 之间的实数。可以理解为一个概率值,越接近于 1 时,表明取 1 的概率越大,越接近于 0 时,表明取 0 的概率越大。Sigmoid 函数σ(wx+b)被定义为:
σ(z)=11+e−z
图 4 给出了 sigmoid 神经元输出函数的图形和原始感知器输出函数的图形。重要的是函数σ的光滑性,而不是它的具体形式。光滑性保证了权重或者偏移的微小改变会导致函数结果的微小改变,从而为权重和偏移的学习提供了可能。根据微积分原理,可以有以下等式成立。
式子可以表述为:函数输出的改变约等于函数对不同的权重的偏导与该权重的改变之乘积的总和,再加上函数对偏移的偏导与偏导的乘积。换句话说,输出的改变是权重和偏移的改变的线性函数。其中,其重要作用的是函数σ的偏导,也就是它的形状。
神经网络的体系结构
神经网络体系结构由多个层次和层次之间的连接构成。按照层次所处的位置,分别被称为输入层、隐藏层和输出层,如图 5 所示。识别手写数字的简单网络
为了识别单个的手写数字,使用了一个三层的神经网络,图 6 是其结构图的一部分。因为图像是由 28*28 = 784 个像素点组成,所以输入层有 784 个神经元,每个神经元的值是其对应像素点的灰度。
第二层是隐藏层,隐藏层的神经元数目用 n 来表示。在本次实验中,n = 15。
第三层是输出层,有 10 个神经元,对应 0 到 9 共 10 个数字,其输出值是图片内容为这个数字的概率。
相关文章推荐
- bp神经网络及matlab实现
- CUDA搭建
- 稀疏自动编码器 (Sparse Autoencoder)
- 白化(Whitening):PCA vs. ZCA
- softmax回归
- 卷积神经网络初探
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- TensorFlow人工智能入门教程之十一 最强网络DLSTM 双向长短期记忆网络(阿里小AI实现)
- TensorFlow人工智能入门教程之十四 自动编码机AutoEncoder 网络
- TensorFlow人工智能引擎入门教程所有目录
- 如何用70行代码实现深度神经网络算法
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 基于神经网络的预测模型
- 神经网络初步学习手记
- 安装caffe过程记录
- DIGITS的安装与使用记录
- 图像识别和图像搜索
- 卷积神经网络
- 51CTO学院优质新课抢先体验-5折好课帮你技能提升、升职加薪