三层神经网络自编码算法推导和MATLAB实现
来源:互联网 发布:淘宝更换类目有影响吗 编辑:程序博客网 时间:2024/06/05 20:19
声明:参考Andrew Ng深度学习课件以及tornadomeet博文的代码。
自编码算法定义
有监督的神经网络需要我们的数据是有标注(Labeled)的,然而神经网络并不止限于处理有标注的数据,同时还能处理无标注的数据,形如:
AutoEncoder-自编码网络可以处理此类算法。
自编码神经网络尝试学习一个
参数设置
输入:
x
输出:a(l)j l层j个节点的激活度
权重:w,b
平均活跃度
隐藏神经元
加入限制条件
设置
代价函数
对于固定子集
单个样例的代价函数
其中,
整体样例代价函数
cost公式
matlab代码实现
数据为10000张8*8的图像,三层神经网络,隐藏层25个节点,输入和输出都是64个节点。
W1 = reshape(theta(1:hiddenSize*visibleSize), hiddenSize, visibleSize);W2 = reshape(theta(hiddenSize*visibleSize+1:2*hiddenSize*visibleSize), visibleSize, hiddenSize);b1 = theta(2*hiddenSize*visibleSize+1:2*hiddenSize*visibleSize+hiddenSize);b2 = theta(2*hiddenSize*visibleSize+hiddenSize+1:end);cost = 0;Jcost = 0;%直接误差Jweight = 0;%权值惩罚Jsparse = 0;%稀疏性惩罚[n m] = size(data);%m为样本的个数,n为样本的特征数%前向算法计算各神经网络节点的线性组合值和active值z2 = W1*data+repmat(b1,1,m);%注意这里一定要将b1向量复制扩展成m列的矩阵a2 = sigmoid(z2);z3 = W2*a2+repmat(b2,1,m);a3 = sigmoid(z3);% 计算预测产生的误差Jcost = (0.5/m)*sum(sum((a3-data).^2));%计算权值惩罚项Jweight = (1/2)*(sum(sum(W1.^2))+sum(sum(W2.^2)));%计算稀释性规则项rho = (1/m).*sum(a2,2);%求出第一个隐含层的平均值向量Jsparse = sum(sparsityParam.*log(sparsityParam./rho)+ ... (1-sparsityParam).*log((1-sparsityParam)./(1-rho)));%损失函数的总表达式cost = Jcost+lambda*Jweight+beta*Jsparse;
反向传播
整体思路
计算偏导数
整体代价函数偏导
更新公式
MATLAB代码
%反向算法求出每个节点的误差值d3 = -(data-a3).*sigmoidInv(z3);sterm = beta*(-sparsityParam./rho+(1-sparsityParam)./(1-rho));%因为加入了稀疏规则项,所以 %计算偏导时需要引入该项d2 = (W2'*d3+repmat(sterm,1,m)).*sigmoidInv(z2); %计算W1grad W1grad = W1grad+d2*data';W1grad = (1/m)*W1grad+lambda*W1;%计算W2grad W2grad = W2grad+d3*a2';W2grad = (1/m).*W2grad+lambda*W2;%计算b1grad b1grad = b1grad+sum(d2,2);b1grad = (1/m)*b1grad;%注意b的偏导是一个向量,所以这里应该把每一行的值累加起来%计算b2grad b2grad = b2grad+sum(d3,2);b2grad = (1/m)*b2grad;
2 0
- 三层神经网络自编码算法推导和MATLAB实现
- 三层 BP 神经网络 matlab 实现
- matlab实现神经网络算法
- 最简单的三层神经网络Matlab实现
- 神经网络中的反向传播法算法推导及matlab代码实现
- 神经网络和反向传播算法推导
- 神经网络和反向传播算法推导
- 神经网络和反向传播算法推导
- 神经网络和反向传播算法推导
- CNN卷积神经网络推导和实现
- CNN卷积神经网络推导和实现
- CNN卷积神经网络推导和实现
- CNN卷积神经网络推导和实现
- CNN卷积神经网络推导和实现
- CNN卷积神经网络推导和实现
- 神经网络简单实现和公式推导
- matlab自带函数实现BP神经网络
- 前反馈神经网络的手工推导和第一Matlab尝试
- 关于闭包的简单理解
- 单片机存储中的大小端模式
- K-means
- 【REACT NATIVE 系列教程之十一】插件的安装、使用与更新(示例:REACT-NATIVE-TAB-NAVIGATOR)
- Python Print的扩展
- 三层神经网络自编码算法推导和MATLAB实现
- Android EventBus框架(一)之使用详细介绍
- 未发现后门:开源加密软件TrueCrypt安全审计结束
- cmd复制.java并合并为.txt
- PPT让艺术字倾斜一点
- ionic图片资源懒加载,延迟加载—— ionic-image-lazy-load
- 项目3——数组模板
- 【杭电-oj】-2050-折线分割平面
- Spring容器中Bean的作用域