[学习笔记]数据挖掘-week4

人工神经网络

单一神经元

感知机
一个单独的神经元又称为感知机(perceptrons)。公式定于如下:

o = { 1 , if ∑ i = 0 n w i ⋅ x i > 0 0 , otherwise o ( x 1 , . . . , x n ) = { 1 , if w 0 + w 1 ⋅ x 1 + . . . + w n ⋅ x n > 0 0 , otherwise \begin{aligned} o & = \begin{cases} 1,\quad & \text{if}\quad\sum_{i=0}^nw_i\cdot x_i > 0\\ 0,\quad & \text{otherwise} \end{cases} \\[2ex] o(x_1,...,x_n) & = \begin{cases} 1, \quad & \text{if}\quad w_0+w_1\cdot x_1+...+w_n\cdot x_n > 0 \\ 0, \quad & \text{otherwise} \end{cases} \end{aligned} oo(x1,...,xn)={1,0,ifi=0nwixi>0otherwise={1,0,ifw0+w1x1+...+wnxn>0otherwise

上述公式实际是建立了一个判决平面,在坐标轴上将数据一分为二。 x i x_i xi 表示输入, w i w_i wi 表示权重,其中 x 0 x_0 x0 为1, w 0 w_0 w0 代表偏置,防止判决平面过原点。

通过调整权重,可以让神经元实现不同的功能,为能够找到最适合的权重,通过梯度下降法(gradient descent)来寻找误差最小的权重。

对误差定义如下:

E ( w ⃗ ) = 1 2 ∑ d ∈ D ( t d − o d ) 2 E(\vec{w})=\frac{1}{2}\sum_{d\in D}(t_d-o_d)^2 E(w )=21dD(tdod)2

1 2 \frac{1}{2} 21 是因为在后续的过程中会求导。 t t t 为期望的输出, o o o 为实际的输出。训练集用 D D D 表示。将整个样本集的误差求和的方式为批处理学习(batch learning)。通过误差函数对权重求偏导,可以得到如何更改权重。

∇ E ( w ⃗ ) = [ ∂ E ∂ w 0 , . . . , ∂ E ∂ w n ] w i ← w i + Δ w i w h e r e Δ w i = − η ∂ E ∂ w i \nabla E(\vec{w})=\left[\frac{\partial E}{\partial w_0},...,\frac{\partial E}{\partial w_n}\right]\\[2ex] w_i\gets w_i+\Delta w_i \quad where \quad\Delta w_i=-\eta\frac{\partial E}{\partial w_i} E(w )=[w0E,...,wnE]wiwi+ΔwiwhereΔwi=ηwiE

η \eta η 表示学习率。而前面加负号用于得到正确的调整方向,当误差对权重求偏导时,数值为正数,表示误差会随着权重的增大而增大,那么就需要减少权重。反之毅然。

∂ E ∂ w i = ∂ ∂ w i 1 2 ∑ d ∈ D ( t d − o d ) 2 = 1 2 ∑ d ∈ D ∂ ∂ w i ( t d − o d ) 2 = 1 2 ∑ d ∈ D 2 ( t d − o d ) ∂ ∂ w i ( t d − o d ) 设 o ( x ) = w ⋅ x = ∑ d ∈ D ( t d − o d ) ∂ ∂ w i ( t d − w ⋅ x d ) = ∑ d ∈ D ( t d − o d ) ( − x d ) Δ w i = η ∑ d ∈ D ( t d − o d ) x i d ← Delta Rule \begin{aligned} \frac{\partial E}{\partial w_i} & = \frac{\partial}{\partial w_i}\frac{1}{2}\sum_{d\in D}(t_d-o_d)^2\\[2ex] & = \frac{1}{2}\sum_{d\in D}\frac{\partial}{\partial w_i}(t_d-o_d)^2\\[2ex] & =\frac{1}{2}\sum_{d\in D}2(t_d-o_d)\frac{\partial}{\partial w_i}(t_d-o_d)\\[2ex] &\text{设}\quad o(x) = w\cdot x \\[2ex] & = \sum_{d\in D}(t_d-o_d)\frac{\partial}{\partial w_i}(t_d-w\cdot x_d) \\[2ex] & = \sum_{d\in D}(t_d-o_d)(-x_d)\\[2ex] &\Delta w_i = \eta\sum_{d\in D}(t_d-o_d)x_{id} \gets\text{Delta Rule} \end{aligned} wiE=wi21dD(tdod)2=21dDwi(tdod)2=21dD2(tdod)wi(tdod)o(x)=wx=dD(tdod)wi(tdwxd)=dD(tdod)(xd)Δwi=ηdD(tdod)xidDelta Rule

x i d x_{id} xid 为样本的输入。在更新方式中,若是batch learning,先将所有样本走一遍每次对 Δ w i \Delta w_i Δwi 做更新,最后再将 Δ w i \Delta w_i Δwi 更新到 w i w_i wi 中。若是 stochastic learning,则每次计算直接更行到 w i w_i wi 中。

感知机只能处理线性可分问题。

多个神经元

由多个神经元组合成的网络为人工神经网络,能够解决线性不可分问题。除输入层以外的神经元在输出时需要使用激活函数。常用的激活函数为:

s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+ex1

该函数的值域为[0,1]之间,输入数据绝对值越接近 0,导数越大。

多层网络

BP

当上图中的 j 是输出层时。
E d ( w ⃗ ) = 1 2 ∑ k ∈ o u t p u t ( t k − o k ) 2 Δ w j i = − η ∂ E d ∂ w j i ∂ E d ∂ w j i = ∂ E d ∂ n e t j ⋅ ∂ n e t j ∂ w j i ∂ E d ∂ n e t j = ∂ E d ∂ o j ⋅ ∂ o j ∂ n e t j n e t j 表示j的输入 ∂ E d ∂ o j = ∂ ∂ o j 1 2 ∑ k ∈ o u t p u t ( t j − o j ) 2 = ∂ ∂ o j 1 2 ( t j − o j ) 2 = − ( t j − o j ) ∂ o j ∂ n e t j = ∂ σ ( n e t j ) ∂ n e t j = o j ( 1 − o j ) ∂ E d ∂ n e t j = − ( t j − o j ) o j ( 1 − o j ) Δ w j i = η ( t j − o j ) o j ( 1 − o j ) x j i \begin{aligned} &E_d(\vec{w})=\frac{1}{2}\sum_{k\in output}(t_k-o_k)^2 \\[2ex] &\Delta w_{ji}=-\eta\frac{\partial E_d}{\partial w_{ji}} \\[2ex] &\frac{\partial E_d}{\partial w_{ji}}=\frac{\partial E_d}{\partial net_j}\cdot\frac{\partial net_j}{\partial w_{ji}} \\[2ex] &\frac{\partial E_d}{\partial net_j}=\frac{\partial E_d}{\partial o_j}\cdot\frac{\partial o_j}{\partial net_j} \\[2ex] &net_j \text{表示j的输入}\\[2ex] \frac{\partial E_d}{\partial o_j} &=\frac{\partial}{\partial o_j}\frac{1}{2}\sum_{k\in output}(t_j-o_j)^2 \\[2ex] &=\frac{\partial}{\partial o_j}\frac{1}{2}(t_j-o_j)^2 \\[2ex] &=-(t_j-o_j) \\[3ex] \frac{\partial o_j}{\partial net_j} &= \frac{\partial\sigma(net_j)}{\partial net_j}=o_j(1-o_j) \\[2ex] \frac{\partial E_d}{\partial net_j}&=-(t_j-o_j)o_j(1-o_j) \\[2ex] \Delta w_{ji}&=\eta(t_j-o_j)o_j(1-o_j)x_{ji} \end{aligned} ojEdnetjojnetjEdΔwjiEd(w )=21koutput(tkok)2Δwji=ηwjiEdwjiEd=netjEdwjinetjnetjEd=ojEdnetjojnetj表示j的输入=oj21koutput(tjoj)2=oj21(tjoj)2=(tjoj)=netjσ(netj)=oj(1oj)=(tjoj)oj(1oj)=η(tjoj)oj(1oj)xji

对于输出层,整体的原理与感知机是一样的。对于非输出层,差别在于误差计算。输出层的误差通过 t j − o j t_j-o_j tjoj计算,非输出层的误差是通过后一层的误差乘以两层之间的权重得到。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值