神经网络NeuralNetworkby石羽qsg2018.07.23weather:~~~交流qq:1370287238什么是神经元?connect神经+网络如何连接?如何运作?如何学习?神经元1PART01神经元可以看作是装着数字的容器数字范围:0~1数字含义:神经元激活程度1~:完全激活0~:未激活神经元是什么?神经元的激活值如何获取?ai1i2i3i...inw1w2w3w...wn激活值an个输入信号:i1,i2,i3,...,in输入对应权值:w1,w2,w3,...,wn神经元结构a=σ(i1*w1+i2*w2+i3*w3+...+in*wn-b)b是偏置,代表该神经元的激活难易程度σ是激活函数,常见的有{0....10....0yxx)(y{0....0....0reluxxx)sigmoid(11yex简单神经网络2PART02手写数字的识别}28px}28px构造一个神经网络能够识别28*28像素的手写数字图片中的数字分析输入:28*28图片输出:0~9中的一个数字28*28=784个像素像素灰度值1纯白0纯黑输入层:784个神经元隐藏层:30个神经元输出层:10个神经元}28px}28px输入层784layer1隐藏层30layer2输出层10layer3对应每个数字的概率权重矩阵layer1偏置layer2激活矩阵矩阵激活矩阵w2,1L1的第二个神经元连L2的第一个神经元的权重a(2)1(2)代表第二层下标1代表第一个神经元b2待计算的第二神经元的偏置pia'pia'p)2(30)2(2)2(1)1(784)1(2)1(1784,302,301,30784,22,21,2784,12,11,1..30..21..........................aaabbbaaawwwwwwwww由第一层计算第二层的激活值1[0,0,0,0,0,0,0,0,0,1]T看得出在数字9的概率为1所以神经网络识别结果是9理想输出2[0.32,0.43,0.44,0.78,0.89,0.53,0.35,0.89,0.12,0.45]T这看不出结果,因为神经网络能做出正确识别的权重w和偏置b我们没办法像设置电路开关一样一开始就能设计好,所以神经网络需要有自我学习和自我修正的能力实际输出学习算法3PART03给出正确结果,让我们的神经网络知道自己该有多羞愧明明是个9却说是个6,结果越离谱我们的神经网络就该反省得越多(判断结果与实际结果的差异)BP算法(误差逆传播),让我们的神经网络返回去修改每一个权值和偏置使准确度提高全批量梯度下降,小批量梯度下降,随机梯度下降让神经网络知道如何修改才能更好评价函数反向传播梯度下降算法为了让我们的神经网络拥有学习的自我修正的能力,我们要让神经网络y=θ(w,b)入坑就行,有三个法宝:向前迈一步+找梯子+入坑梯度下降算法理解一元函数y=x21.梯度下降不一定收敛到最小值2.步长大小要适中,过小收敛过程很慢,过大易导致震荡不收敛3.梯度下降变种,针对学习率的改进,但是无法保证全局收敛还将是一个持续性的数学难题注意-2.5-2-1.5-1-0.500.511.522.5012345Series1;Y值;4Y值;1Y值;0Y值;1Y值;4Y值计算y=x2的最小值x0=2求梯度=2xʘ向梯度相反的方向移动x新=x旧-v*,vʘ是步长v=0.001x=2=4x=2-0.001*4=1.996ʘx=1.996=3.992x=1.996-0.001*3.992=1.992ʘx=1.992=3.984x=1.992-0.001*3.984=1.988ʘ...x0=-1x=-1=-2x=-1-0.001*(-2)=-0.998ʘx=-0.998=-1.996x=-0.998-0.001*(-1.996)=-0.996ʘ两种情况都会逐渐靠近0,直到两次迭代之间的差值足够小则说明y已经达到局部最小。借助BP算法实施梯度下降算法输入:训练集D,学习率;1.在(0,1)范围内随机初始化网络中所有W和B2.repeat:3.forall样本属于Ddo根据当前参数计算当前样本的输出;计算输出层神经元的梯度项;计算隐层神经元的梯度项;更新连W与Bendforuntil达到停止条件输出:W与B确定的神经网络i1i2h1h20102w1w2w3w4w5w6w7w8b1b1b2b2)sigmoid(11y:ex激活函数1.初始w和b,学习率(步长)v=0.5[w1,w2]=[0.15,0.20][w5,w6]=[0.40,0.45][w3,w4]=[0.25,0.30][w7,w8]=[0.50,0.55]b1=0.35b2=0.602.输入样本((0.05,0.10),(0.01,0.99))前向传播h1=sigmoid(w1*i1+w2*i2+b1)=0.5932h2=sigmoid(w3*i1+w4*i2+b1)=0.5968o1=sigmoid(w5*h1+w6*h2+b2)=0.7513o2=sigmoid(w7*h1+w8*h2+b2)=0.7729反向传播评价误差E=1/2[(o1-0.01)2+(o2-0.99)2]=0.2983针对w5计算梯度(求E=(w1,w2,...,w8,b1,b2)函数对w5的偏导数)s是(w*a+b)sigmoid(y'=y*(...