首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程
1. 简介
神经网络和深度学习是由Michael Nielsen所写,其特色是:兼顾理论和实战,是一本供初学者深入理解Deep Learning的好书。
2. 感知器与sigmoid神经元
2.1 感知器(Perceptrons)
感知器工作原理:接收一系列二进制输入,经过特定的规则计算之后,输出一个简单的二进制。
计算规则:通过引入权重(weights)表示每个输入对于输出的重要性,则有
记
感知器网络存在的缺陷是:某个感知器较小的权重或偏差变化,可能导致输出在0与1之间进行翻转。所以包含感知器的网络不具备【学习特征】。
幸运的是:Sigmoid神经元具有此【学习特征】,即其较小的权重或偏差变化,导致其输出变化较小。
Sigmoid函数:
Sigmoid神经元输出:
感知器与sigmoid神经元的差别:
1) 感知器只输出0或1
2)sigmoid神经元不只输出0或1,而可输出[0,1]之间的任意值
3. 神经网络架构
3.1 手写数字识别
训练图像大小为28x28,每个训练图像有一个手写数字。
在输出层,如果第一个神经元被激活(即其输出接近1),则此网络认为此手写数字为0;
如果第二个神经元被激活(即其输出接近1),则此网络认为此手写数字为1;
其它以此类推。
3.2 算法描述
设x表示训练图像,则x是一个28x28=784维列向量。
表示输入图片x是数字6 。
需要寻找一个算法来发现w和b,使其输出接近标签值,为了量化接近程序,定义如下成本函数:
w:所有权重的集合
b:所有偏差的集合
n:训练样本数
a: 输出向量(其值依赖x,w,b)
x:一幅训练图像
||v||:表示向量的范数,即向量的长度
C:二次成本函数(mean squared error or MSE)
如果接近于0,表示y(x)接近输出a,即学习效果很好。
此成本函数中,w和b为变量。
注:hidden layers和output layer中的每个神经元对应一个组w、b。
3.2.1 学习目标
如何找到满足要求的w和b:答案是梯度下降法(Gradient Descent)
1)最小化二次成本函数
2)检测分类的准确性
学习目标:在训练神经网络中,找到使二次成本最小的w和b的集合。
3.2.2 梯度下降更新规则
:表示学习速度(Learning Rate)
此规则用于在神经网络中学习参数w和b。
3.2.3 算法推导(梯度下降法: gradient descent)
要求极小值,先讨论具有2个变量的简单情况,然后再推广:
令,为梯度向量,则有:
现在的问题是如何选择,使负数,则有:
则v的更新规则为:
按此