单隐层BP神经网络推导
标签:神经网络
今天重新提到了多隐层神经网络,虽然还是挺简单的,但是突然发现没有理解。遂决定整理一下上学期学习的单隐层神经网络,再看看和多隐层BP有什么区别。
符号定义
- 输入向量:n维向量X
- 隐层输出向量:m维向量Y
- 输出向量:l维向量O
- 期望输出向量:l维向量d
- 输入层和隐层间权重矩阵V
- 隐层和输出层间权重矩阵W
神经网络激活函数
定义f(x)=1+e−x1为激活函数
其中输出向量的值为前一层输出向量的加权和ok=f(netk),netk=∑j=0m(wjk∗yj),k=1,2,...,l
隐层输出向量的值为输入向量的加权和yj=f(netj),netj=∑i=0n(vij∗xi),j=1,2,...,m
定义误差E=21(d−O)2=21∑k=1l(dk−Ok)2(这里嫌麻烦,就不展开了)
隐层与输出层间权重变化值Δwjk=−η∂wjk∂E=−η∂netk∂E∂wjk∂netk=−ηδkoyj
输入层与隐层间权重变化值Δvij=−η∂vij∂E=−η∂netj∂E∂vij∂netj=−ηδjyxi
其中误差信号δko=−∂netk∂E=−∂ok∂E∂netk∂ok=−∂ok∂Ef′(netk)=(dk−ok)∗ok(1−ok)
误差信号δjy=−∂netj∂E=−∂yj∂E∂netj∂yj=−∂yj∂Ef′(netj)=(∑k=1lδkowjk)∗yj(1−yj)
最终推得隐层输出向量与输出向量间权重变化量为Δwjk=−ηδkoyj=η∗(dk−ok)∗ok(1−ok)∗yj
输入向量与隐层输出向量间权重变化值Δvij=−ηδjyxi=η∗(∑k=1lδkowjk)∗yj(1−yj)∗xi