线性神经网络
- 与感知器区别
- 感知器激活函数输出两种值,使用sign函数调整权值
- 线性神经网络激活函数(线性函数)输出任意值,使用LMS(最小均方)调整权值和偏置
- purelin函数(y=x)
LMS学习规则:最小均方规则
线性神经网络结构
-
purelin用于训练
-
sign用于预测
delta学习规则:连续感知器学习规则
利用梯度下降法的一般性学习法则
代价函数(损失函数)
梯度下降
梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
梯度下降的问题
- 学习率难取
- 太大震荡大
- 太小收敛慢
- 容易陷入局部最优解
解决异或问题
下面的代码部分,就是在输入中添加非线性输入,实现解决异或问题
代码
import numpy as np
import matplotlib.pyplot as plt
class LinearNeuralNetwork(object):
def __init__(self, data, label,learing_rate,epoch):
self.data = data
self.label = label
self.learning_rate = learing_rate
self.W = (np.random.random(data.shape[1]) - 0.5) * 2
self