您的位置:首页 > 理论基础 > 计算机网络

传统神经网络

2018-01-21 01:04 148 查看
主要内容:线性回归,神经网络
1.线性回归
定义:一个线性方程,用线性关系来描述从输入到输出的映射关系

-->希望找到系数abcd使得预测值尽可能接近目标值
*找系数方法:梯度下降法(通过特征(x,y)确定特征拟合一条直线)
思想:损失函数loss对系数求偏导得到用自变量x0,x1……表示的梯度,然后,新系数=旧系数-步长*梯度,更新系数。当loss小于预定值时候达到目标,终止算法





算法过程:



p.s.目标y是事先知道的(样本特征得一部分),作为常数带入loss损失函数
  
*多目标学习:输出y有多个(预测多个结果),通过合并多个任务loss实现



 
线性回归局限:非线性分布

2.从线性到非线性
   做法:



在线性得基础上加上一个非线性激励函数

*常用激励函数
(1)sigmoid将输入映射到[0,1],梯度下降很快





(2)将数据映射到[-1,1],梯度衰减明显(乘该函数后倒数变小)





  

(3)ReLU:截断负值,损失大量特征,梯度无损失-->常用





(4)Leaky ReLU:保留更多参数(不能是y=x,否则线性)





加上非线性激励函数-->神经元-->回归网络
p.s. 没有线性回归网络,线性无论叠多少层都相当于一层系数矩阵相乘

3.神经网络构建
*构建:神经元的串联与并联



并联:宽度;串联:深度
n+1层第k个神经元数值:输入由前一层所有映射到它的神经元输出值Xni和对应权重Wnki决定



*神经网络优化:链式法则(反向求loss-->Y-->x-->Wn)
4.神经网络“配件”
(1)损失函数LOSS
        真值与预测值之间的差,选取合适的1损失函数,使LOSS值能一直降(收敛)
   *常见的损失函数:1.softmax (e的Zi次幂比上Zi次之和)



-->由于指数区分度较大,可用于分类问题

2. cross entropy 交叉熵:使用了“估算”的编码后,得到的平均编码长度(可能不是最短的)





解释:p是真实概率分布,q是你以为的概率分布(可能不一致);
你以 q 去编码,编码方案 log(1/q_i)可能不是最优的;
于是,平均编码长度 = ∑ p_i *log(1/q_i),就是交叉熵;
3.设计损失函数:自定义
方法:不同loss加权求期望;合并多个Loss(整合):不同loss线性相加;
(2)学习率α(loss与时间的比值)
       数值大:收敛速度快;数值小:精度高;



选择合适学习率:
1.根据数据集选择合适学习率,数据量增多,学习率减小 ;
    或采用成本函数-均值平方差函数
2. 离最优解较远时(loss较小)用较大学习率,离最优解较近时(loss较大)用小的学习率;                    
3. 常用学习率:0.00001,0.0001,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10
(3)动量,Nestrov动量(两步走,先走动量再与原惯性合成)
动量梯度下降法:当求偏导计算出当前点梯度后,用动量与梯度合成改变方向(优化梯度向最小方向前进)



(4)过拟合 overfitting
面对一般情况时候判断效果较好即可
过拟合:当一点“不一样”就判断不同(让小概率事件对结果直接产生影响)





(绿线,W2过拟合)

过拟合应对:regularization正则化(使w权重尽可能平衡)
<1>L2 正则化:在loss中加W^2项,使得求偏导计算梯度时使w项权重衰减





红框weight decay

<2>Dropout 正则化:



权重随机赋0(20%~50%)

<3>fine-tuning  对大部分层数据锁定,只让实际进行计算的层进行更新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习 入门