1.神经网络起源:线性回归
(1)一个线性回归问题
目标方程:y=ax1+bx2+cx3+d
参数:m=[a,b,c,d]
数据:
[(x1,1,x2,1,x3,1),(x1,2,x2,2,x3,2),…(x1,n,x2,n,x3,n)][y1,y2……yn]
预测:y^t=ax1,t+bx2,t+cx3,t+d
目标:minimize (y^t−yt)
优化方法:梯度下降

(2)梯度下降法计算模型参数
当前:m0=[a0,b0,c0,d0]
梯度计算:
Loss=ax1,t+bx2,t+cx3,t+d−y

参数更新:m:=m−ηΔm
梯度下降法总结:
随机初始化参数
开启循环:t=0,1,2,⋯
带入数据求出结果y^t
与真值比较得到loss =y−y^t
对各个变量求导得到△m
更新m
如果loss足够小或t循环结束,终止。
(3)多目标学习
通过合并多个任务loss,一般能产生比单个模型更好的结果。

线性回归的局限性:
线性回归能够清楚的描述分割线性分布的数据,对非线性分布的数据描述较弱。

2.从线性到非线性
非线性激励
考量标准:
1.正向对输入的调整;
2.反向梯度损失。

常用的非线性激励函数
(1)Sigmoid函数
将输入数据映射到[0,1],梯度下降明显,至少减少75%,梯度最大值为0.25。
y(x)=sigmoid(x)=1+e−x1
y(x)′=y(x)(1−y(x)))

(2)tahn函数
将输入数据映射到[0,1],梯度下降明显。
f(x)=tanh(x)=1+e−2x2−1f′(x)=1−f(x)2

(3)ReLu函数
正向截断负值,损失大量特征(特征足够多,不会有影响),但是反向梯度没有损失。
f(x)={0x for for x<0x≥0f′(x)={01 for for x<0x≥0

(4)Leaky ReLU函数
保留更多参数,少量梯度反向传播。
f(x)={0.01xx for for x<0x≥0f′(x)={0.011 for for x<0x≥0
神经元-神经网络

问题:有没有线性回归网络?
并没有。
X1=W0⋅X0,X2=W1⋅X1,Y=W2⋅X2Y=W2⋅W1⋅W0⋅X0=W3⋅X0
3.神经网络的构建
(1)神经元的“并联”和“串联”
从第一层神经完了过得到最终输出,每一个神经元的数值由前一层神经元数值,神经元参数W,b以及激励函数共同决定,第n+1层第k个神经元的方程可由公式表示为:
zn+1,k=i=1∑mWn,k,i⋅xn,i+bn,kyn+1,k=1+e−zn+1,k1

(2)神经元的优化
链式法则
计算梯度:
output->last layer Loss–> Δyn
layer–>layer Δyn−>Δxn
layer->parameter Δyn−>Δwn

4.神经网络的配件
(1)损失函数
Softmax:
σ(z)j=∑k=1Kezkezj for j=1,…,K
Loss影响:
[1,2,3,4,1,2,3]⟶[0.024,0.064,0.175,0.475,0.024,0.064,0.175]
Softmax好处,分类问题的预测结果更明显。
交叉熵:
L(w)=N1n=1∑NH(pn,qn)=−N1n=1∑N[ynlogy^n+(1−yn)log(1−y^n)]
Explode问题解决:
Loss=−Σ(l⋅log(1.05p+0.05)+(1−l)⋅log(1.051.05−p))
用途,目标为[0,1]区间的回归问题,以及生成。
自定义损失函数
a.看重某一属性:单独将某一些预测值取出或赋予不同大小的参数;
b.合并多个loss:多目标训练任务,设置合理的loss结合方式(各种运算)
c.神经网络融合:不同神经网络loss融合,共同loss对网络进行训练指导。
(2)学习率
数值大:收敛速度快,数值小,精度高。

选择合适的学习率:
(1)Fixed;
(2)Step;
(3)Adagrad;

(4)RMSprop;

(3)动量
正常情况
动量更新:

方向不同找的更准确。

(4)过拟合

过拟合应对:
a.正则化

b.Dropout
随机舍弃掉一些特征,通常为50%,与Pooling的区别:Pooling本质是降维,Droupout本质是正则化。
c.Fine-tuning
大部分参数不用更新,实际的参数大量减少。
