前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多层感知机模型讲解

多层感知机模型讲解

作者头像
mathor
发布2020-01-03 10:06:36
3770
发布2020-01-03 10:06:36
举报
文章被收录于专栏:mathormathor

具有多层输出的感知机如下图所示:

图中节点上的符号表示的含义是:

  • $x^1_k$代表第1层上的第k个节点
  • $O^1_k$同样代表第1层上的第k个节点

若能求出$\frac{\nabla E}{\nabla w_{jk}}$的结果,便可知道所有的梯度信息

Derivative

首先我们定义$E=\frac{1}{2}\sum_i(O^1_i - t_i)^2$

$$ \begin{align*} \frac{\nabla E}{\nabla{w_{jk}}} &= (O^1_k - t_k)\frac{\nabla O^1_k}{\nabla w_{jk}} \\ &= (O^1_k - t_k)\frac{\nabla \sigma(x^1_k)}{\nabla w_{jk}} \\ &= (O_k^1-t_k)\sigma(x_k^1)(1-\sigma(x_k^1))\frac{\nabla x_k^1}{\nabla w_{jk}} \\ &= (O_k^1-t_k)O^1_k(1-O^1_k)x^0_j \\ \end{align*} $$

由推导结果可看出,一条边上的输出结果只与该线上的输入值$x^0_j$和$O^1_k$,因此对于一个多输出的感知机,对比单输出的感知机,改变了输出节点上的取值。单层为$O_0$,多层为$(O_k^1-t_k)$

代码语言:javascript
复制
import torch
import torch.nn.functional as F

x = torch.randn(1,10) # dim=1,len=10, x为[1,10]的矩阵
w = torch.randn(2, 10, requires_grad=True) # w为[2,10]的矩阵

o = torch.sigmoid(x@w.t()) # o为[1,2]的矩阵
print("o.shape: ", o.shape)

loss = F.mse_loss(input=o, target=torch.ones(1, 2))
print("loss: ", loss)
loss.backward()
print("w.grad: ", w.grad)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Derivative
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档