首页 > 学院 > 开发设计 > 正文

机器学习/深度学习测试题(二)—— 单层线性神经网络求解异或问题

2019-11-06 08:29:43
字体:
来源:转载
供稿:网友

1. 输入样本的处理

听起来似乎是一个比较奇怪的说法,不对输入做任何处理的话,是无法求解异或问题的。这里提供一种对输入进行处理的可行方式:对输入样本做必要的升维处理,其实质是引入非线性分量。

如下图所示:

这里写图片描述

X = [0, 0, 0; 0, 1, 1; 1, 0, 1; 1, 1, 0]; % 行表示样本,包含输入值和目标值P = [X(:, 1), X(:, 1).^2, X(:, 1).*X(:, 2), X(:, 2).^2, X(:, 2)]'; % 为了保证 matlab 接口的一致性,使其每一列为一个样本;d = X(:, 3)';

2. 定义单层线性神经网络

lr = maxlinlr(P, 'bias'); % 根据 1996 年 Hayjin 证明的 LMS 算法的收敛性,最大学习率与输入样本矩阵的自相关矩阵的最大特征值有关;net = linearlayer(0, lr);% 开始训练net = train(net, P, d);% 测试sim(net, P)% 查看学习到的权值net.iw{:}net.b{:}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表