神经网络-原理

   神经网络是多个神经元的组成 ,单个神经元是通过输入数据与权重值相乘再根据目标函数(损失函数)进行加工得到输出结果,如果是神经网络系统则将神经元输出再作为其它层级的数据输入参与运算,由此诸多神经元构成了神经网络系统。
神经元:
w:权重
x:特征值
f:激活函数
b:偏置(与原点的距离)
 
例子:
x = [3,1,2]
w = [0.4,0.6,0.5]
f(a) = a/10
算法原理:
w*x = 3*0.4 + 1*0.6 + 2*0.5 = 2.8
f(w*x) = f(2.8) = 0.28
 
激活函数sigmoid
神经元->多输出
w从向量扩展为矩阵
输出w*x则变成向量
例子:
x = [3,1,2]
w = [[0.4,0.6,0.5],[0.3,0.2,0.1]]
算法原理:
y = [y0,y1] = [2.8,1,3]
y0 = w[0] * x = 3 * 0.4 + 1 * 0.6 + 2 * 0.5 = 2.8
y1 = w[1] * x = 3 * 0.3 + 1 * 0.2 + 2 * 0.1 = 1.3
目标函数(损失函数):衡量对数据和拟合程度 
单输出例子:
(x1,y1) = ([10,3,9,20,…,4],1)
  预测值 y1′ = Model(x1) = 0.8
  Loss = y1 – y’1 = 0.2
原理:根据模型计算出预测值,再将预测值减去实际值得到结果,函数目标就是将结果值控制到尽可能小。
 
多输出例子:
 (x1,y1) = ([10,3,9,20,…,4],3)
 y1′ = Model(x1) = [0.1,0.2,0.25,0.4,0.05]
 Loss = ads(y1 – y1′) = [0,0,0,1,0] – y1′
         = [0.1,0.2,0.25,0.6,0.05] = 1.2
原理:根据模型计算出一个预测值向量y1′, 再计算真实值减去预测值的绝对值(将负数转为正数),如果输出类别为3,则将真实值y1向量中第3个位置设置为1,其它均为0。最终实际值与预测值向量差求和算出损失函数的值。
目标函数(损失函数)种类:
  平方差损失函数
  交叉熵函数
调整参数使模型在训练集上的损失函数最小
神经网络训练算法
下山算法 –> 梯度下降算法

About the Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注