基于岭回归的神经网络输出权重矩阵MATLAB实现验证
回声状态网络输出权重岭回归实现的正确性验证
我尝试在MATLAB中复现Mantas Lukosevicius所著*《回声状态网络实用指南》(第11页)中的岭回归训练公式,求解最优输出权重矩阵*。先后完成两次MATLAB实现尝试,但对其正确性存疑:
- 第一次尝试不确定双求和与针对Wout的arg min操作是否正确;
- 第二次尝试通过为每个训练信号计算Wout_i,选取对应最小*均方误差(MSE)*的Wout_i作为最终结果,但担忧该方式仅挑选单个最优Wout_i而忽略其他结果的合理性,现寻求对第二次方案的验证。
第一次尝试代码
N = 100; % 神经网络节点数 Ny = 200; % 训练信号数量 T = 50; % 每个训练信号的时间长度 X = rand(N,T); % 神经网络状态矩阵 reg = 10^-4; % 岭回归系数 outer_sum = zeros(Ny,1); for i = 1:Ny y_i_target = rand(T,1); % 训练信号 Wout_i = ((X*X' + reg*eye(N)) \ (X*y_i_target)); Wouts{i} = Wout_i; % 收集每个训练信号对应的Wout_i到元胞矩阵 y_i = Wout_i'*X; % 预测信号 inner_sum = sum(((y_i'-y_i_target).^2)+reg*norm(Wout_i)^2); outer_sum(i) = inner_sum; end outer_sum = outer_sum.*(1/Ny); [minval, minidx] = min(outer_sum); Wout = cell2mat(Wouts(minidx));
第二次尝试代码
N = 100; % 神经网络节点数 Ny = 200; % 训练信号数量 T = 50; % 每个训练信号的时间长度 X = rand(N,T); % 神经网络状态矩阵 reg = 10^-4; % 岭回归系数 MSE = zeros(Ny,1); for i = 1:Ny y_i_target = rand(T,1); % 训练信号 Wout_i = ((X*X' + reg*eye(N)) \ (X*y_i_target)); % 来自Luko等人的公式9 Wouts{i} = Wout_i; % 收集每个训练信号对应的Wout_i到元胞矩阵 y_i = Wout_i'*X; % 预测信号 MSE(i) = (1/T)*sum((y_i'-y_i_target).^2); % 均方误差 end [minval, minidx] = min(MSE); Wout = cell2mat(Wouts(minidx));
内容的提问来源于stack exchange,提问作者Jonathan Frutschy
相关产品推荐
相关产品推荐

