栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

[学习笔记] Neuron Networks and Deep Learning

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[学习笔记] Neuron Networks and Deep Learning

前言

   文章内容是基于Micheal Nielsen在 http://neuralnetworksanddeeplearning.com 上提供教程《Neural networks and Deep learning》进行的个人学习理解。方便自己温故而知新,加深理解。
  课程开头,Nielsen说明了他写书目的以及对学习者的一些建议,个人的简要理解如下:
1、《Neural networks and Deep learning》讲解了仿生神经网络的结构,数学表达,以及基于此类结构发展出来的深度学习算法。
2、学习此书,求精不求多,修炼内功(数学原理)以及基本的招式(Python数学工具),以能够融会贯通为主要目的。
  鉴于Nielsen的建议,作者计划对此书进行精读之后,再进一步寻找基于Pytorch、Tensorflow等深度学习框架的实践练习。再人工智能学习的进程中,同时练习各种经典的机器学习算法,换换思路。毕竟可以预见,Nielse的这本书对我来讲,啃起来还是比较烧脑的;-P,半路出家的表示有些Hard,大家如果有学习建议,也欢迎提出交流~

使用神经网络识别手写数字

  通过传统的逻辑判断的方式难以写出程序对手写的数字进行识别,通过机器学习,在此处是神经网络的方式提出了解决思路,通过字体数据的训练,得出模型,进行识别。

Perceptrons

  Perceptron结构如下图所示

  threshold其实就是bias(参数b),他是一种阀值,用于对‘权重*特征’后的输出结果进行判断。这种解释,让我对bias的理解更加清晰了一些。

Sigmoid Perceptrons

  如果我们希望权重的微调可以控制输出的微调,那么上文的Perceptrons是无法实现的,在bias的位置会有0和1的跃变。举个例子,如果需要训练识别数字9,从8训练到9的过程中,各neuron的值会在0和1之间跳变,从而造成其他数字识别效果的剧烈波动。因此,一种柔和的调节思路是必要的,Sigmoid在此处提供了解决方案。

import numpy as np
import matplotlib.pyplot as plt

# Sigmoid数据
x = np.arange(-10,10,0.1)
y_s= 1 / (1 + np.exp(-x))
# StepFunction数据
y_b = []
for i in x:
    if i < 0:
        num = 0
        y_b.append(num)
    else:
        num = 1
        y_b.append(num)
# Plot the results
plt.figure()
plt.plot(x, y_s, c="r", label="Sigmoid", linewidth=2, ls='-')
plt.plot(x, y_b, c="g", label="Step Function", linewidth=2, ls='--')
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Sigmoid and Bias perceptron")
plt.grid()
plt.legend()
plt.show()

神经网络结构

  基本的神经网络结构如下图,其由input layer, hidden layer 以及 output layer 构成。input layer 和 output layer结构相对简单,中间的hidden layer则显得千变万化。

  以识别手写数字9为例,数字图像由64 x 64 = 4096的灰度值像素组成,则input layer为4096 x 1的一维向量,output为0到1的数字,当output > 0.5,则表明结果为9,越接近1,为9的可能性越大。
  神经网络结构多样,此处学习记录的是最简单的一种结构。

一种手写数字识别的神经网络


   图像已被实现分割好,为28 x 28 = 784的灰度图像,输出为10x1的向量,里面存储了10种结果,即0~9。

梯度下降法(Gradient Descent)

  Cost Funtion如下:

寻找 ω omega ω 和 b b b ,使得 C C C( ω omega ω, b b b) ≈ approx ≈ 0 0 0,其中, y ( x ) y(x) y(x) = = = ω T omega^T ωT x x x + + + b b b。
1、梯度下降法的物理理解:
以 ω omega ω对应两个特征 x x x的参数为例, C C C( ω omega ω, b b b) 在三维空间上的形状可以理解如下:

ω omega ω代表的小球的位置不断迭代,直到最低点,小球运动趋势则跟每个位置处 C C C( ω omega ω, b b b)的梯度相关。
2、梯度下降法的数学理解:
Cost Function的不断下降过程可以用一下公式来表达(因为主要给自己回顾知识用,图方便,直接贴公式图片了):



定义:

可以看到,定义了参数 ω omega ω(截图中为 v v v)沿着梯度的反方向进行迭代,可以保证Cost Function一直减小,直到参数不再变化。因此,从数学的交付,还原了“小球下山”这样一种想象的物理过程。

随机梯度下降

参数 ( ω , b ) (omega,b) (ω,b)的迭代过程如下:

其中,


如果样本量很大,及 n n n特别大,则会消耗特别大的计算能力,因此出现了随机梯度下降算法的优化策略,即,设计合适 m m m(mini batch),使得:

3、个人对此形象的理解就是:
  Cost Function是关于 ( ω , b ) (omega,b) (ω,b)的函数,训练数据及输出 ( x , a ) (x,a) (x,a)则是Cost Function的系数,系数的数量 n n n越大越全面,Cost Function对于系统误差的描述就越准确,但是同时也会增加计算的难度,因此需要找一组数量不多不少 m m m来描述这个系统的误差,以此兼顾系统误差描述的准确性及计算的高效性。
4、以一个实际的例子打比方:
  政府做民意调查,如果每次调整都做全样本的调查则会特别准确,但是耗时耗力,如果每次调整采用抽样调查的形式,则有可能实现又快有准。
  随机梯度下降的极端形式为每次迭代只选用一个样本点进行估计,这种情况则有可能导致系统无法收敛。

……(未完待续)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883518.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号