吃瓜教程task04——神经网络

1.M-P神经元

2.感知机

3. 神经网络,多层前馈网络

4.BP算法

5.梯度下降法

1. M-P神经元

接收n个输入(通常来自其他神经元):x_1,x_2,...权重:w_1,w_2,...

阈值(自身特有):\theta,输出:通过激活函数(模拟抑制或激活)通常是给下一个神经元。

 y=f(\Sigma_{i=1}^nw_ix_i-\theta)=f(w^Tx+b)

单个M-P神经元:感知机(sgn作激活函数),对数几率回归(sigmoid作激活函数)

多个M-P神经元:神经网络

2.感知机模型

分类模型(正:1,负:0),参考书:《统计学习方法》

【模型】激活函数为sgn(阶跃函数)的神经元:  y=sgn(w^Tx-\theta)=\left\{\begin{matrix} 1 ,&\textbf{w}^Tx\ge 0 \\ 0,&\textbf{w}^Tx\le 0 \end{matrix}\right.

几何角度:学习一个超平面,对给定一个线性可分的数据集T中的正负样本做出完全正确的划分。

超平面方程:\textbf{w}^Tx-\theta;

n维空间的超平面(\textbf{w}^Tx+b=0,其中\textbf{w},\textbf{x}\in R^n):

1.超平面方程不唯一;

2.法向量w垂直于超平面;

3.法向量w和位移项b确定一个唯一超平面;

4.法向量w指向的一半空间为正空间,另一半为负空间。

【策略】\min_wL(w)=\min_w\Sigma(\hat{y_i}-y_i)w^Tx_i

损失函数:L(w,\theta)=\Sigma_{x\in M}(\hat{y}-y)(\textbf{w}^Tx-\theta)

分错就给损失。

随机初始化w,b,将全体训练样本带入模型找出误分类样本,

假设此时误分类样本集合M T,对任意一个误分类样本(x,y)\in M来说,

(\hat{y}-y)(w^Tx-\theta)\leq 0.

【算法】随机梯度下降

《最优化基础理论与方法》王燕军

梯度下降:

随机梯度下降:

随机选取一个误分类点使其梯度下降

w不唯一。

3.神经网络

背景:感知机只能分类线性可分的数据集。神经网络分类线性不可分的数据集。

通用近似定理:只需一个包含足够多神经元的因层,多层前馈网络能以任意精度逼近任意复杂度的连续函数。可以做回归分类,不需要特别复杂的特征工程。

神经网络的问题:在具体场景中

1.做多深多宽?2.结构如何设计才最合理?3.输出结果该如何解释?

都是通过试验,暂时没有理论支撑。

【特征工程】:挖有效的特征。需要人工/经验。

【多层前馈神经网络】

每层神经元与下一层神经元全互连,神经元之间不存在同层连接,

也不存在跨层连接。(隐层阈值\gamma_h,输出层阈值\theta_j

神经网络(记为NN)看作一个特征加工函数。

x\in R^d ->NN(x) -> y=x^*\in R^l

回归(单输出):后面接一个R^l-->R的神经元,如没有激活函数的神经元 y=w^Tx^*+b

分类:后面接一个R^l-->[0,1]的神经元,如激活函数为sigmoid函数的神经元 y=\frac{1}{1+e^{-(w^Tx^*+b)}}

   用交叉熵损失函数。

学习w,x^*,b,向“全自动数据分析”进一步

4.BP算法

现实任务中使用神经网络时,大多数使用BP算法训练,通常说的“BP”网络一般是指用BP算法训练的多层前馈神经网络。

假设多层前馈网络中激活函数全为sigmoid函数;

多输出回归任务:均方误差作损失函数;

分类任务:交叉熵作损失函数。

假定多层前馈网络的输出为\hat{y}_k=(\hat{y}_1^k,\hat{y}_2^k,...,\hat{y}_l^k),则单个样本的均方误差(损失)为(随机梯度下降):

E_k=\frac{1}{2}\Sigma_{j=1}^l(\hat{y}_j^k-y_j^k)^2
 w<- w+\Delta w \Delta=-\eta \nabla_w E

1.\nabla_wE:用矩阵微分算出损失函数E关于参数w 的一阶偏导

2.NN(x)通常非凸,多数情况下只能走到局部极小值点。

以输入层第i个神经元与隐层的第h个神经元之间的连接权v_{ih}为例推导:\delta v_{ih}=-\eta \frac{\partial E_k}{\partial v_{ih}}\\ \frac{\partial E_k}{\partial v_{ih}}=\Sigma^l \frac{\partial E_k}{\partial \hat{y}^k}\frac{\partial \hat{y}^k_j}{\partial\beta_j}\frac{\partial \beta_j}{\partial b_h}\frac{\partial b_h}{\partial \alpha_h}\frac{\partial \alpha_h}{\partial v_{ih}}

5.梯度下降法

【思想】 在山坡上如何最快的准确的到达山脚?1.寻找最陡峭的地方。2.每走一段距离,以当前位置为基准找最陡峭的地方。3.一直重复,直到找到山脚。

【算法】 J是关于\theta 的一个函数

\theta_i=\theta_{i-1}-\alpha \times \nabla J_{\theta} (\theta_{i-1})

 \alpha :学习率,代表步长

\nabla J_{\theta}(\theta_{i-1}):梯度,表示“陡峭程度”(在指定点上升最快的方向)

前进方向为梯度的反方向,按照该式不停的更新\theta的值,一直到其收敛不变为止。

更新表达式为:

\theta_i = \theta{i-1}-\alpha \times \frac{\partial J}{\partial \theta} =\theta_{i-1}-\alpha(y_i'-y_i)x_i

\theta_0=\theta_0'-\alpha \frac{\partial J}{\partial \theta_0'} =\theta_0'-\alpha \times(y_i'-y_i)

参考资料:

[1]周志华,《机器学习》,北京:清华大学出版社

[2]谢文睿,秦州,贾彬彬,《机器学习公式详解》,北京:人民邮电出版社

[3]第5章-神经网络_哔哩哔哩_bilibili

[4]公众号:Datawhale 【文章】《通俗易懂讲解梯度下降法》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值