从线性回归到神经网络介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作者:

武汉大学遥感信息工程学院硕士研究生王艺程

日期:

2015年10月

邮箱:

wyc@

0.从线性回归到深度学习

0.1. 一元线性回归

•假如有数据(X,Y),想用X预测Y的值,采用一个超简单的预测模型:

wX=Y

在这个给定模型下,总会有一个合适的w值,使得估计值Y与真实值Y尽量接近,怎么得到这个合适的w值呢?

训练样本少时,可以使用协方差矩阵帽子矩阵拉格朗日乘数法最小二乘法balabala…

训练样本很多时,可以介样做:(迭代更新)

∆w=αY−Y X

随机给定初始w值,逐一查看训练样本并更新w值,变化量

也就是每次都微调一点w,使得当前一组样本数据下Y和Y更接近一些。

简单粗暴了点,但,就是算得快!就是有效!

0.2. 多元线性回归

•扩展一下,假如有数据(X 1…X n ,Y ),想用X 1…X n 预测Y 的值,采用这个模型:

b + i=1n

w i X i

= Y

可以采用前面提到的迭代更新法,计算合适的权重取值

∆w i =αY

− Y X i 随机给定初始的b 和n 个w i 值(两两间不相等!),

逐一查看训练样本并更新b 和每个w i 值:

∆b =αY − Y

0.3. 逻辑回归

•线性模型太简单了,还可以来点更复杂的

f b + i=1

n

w i X i = Y

其中f 是一个非线性映射(神经网络中叫做激活函数),常见的有:

Sigmoid 函数Gaussian 函数

ReLU 函数(在真正的逻辑回归中不用,但在神经网络中有用)

注意一点:上述映射本身并不含待定系数,上述映射的导数是映射输入的特别简单的函数模型加入f 的好处:更适合分类问题或逻辑运算问题(我的理解)

引入复杂性,使得多神经元的搭配组合有意义(我的理解)

0.3. 逻辑回归

f b + i=1n

w i X i =f A = Y

中的参数求解,仍采用迭代更新:

∆A =Y − Y df dA

∆w i =α∙∆A ∙X i =αY − Y df dA X i ∆b =α·∆A ∙1=αY − Y df

dA 注:为了减少变量定义,做了简化,b 和w i 均为迭代中需要更新的权重变量,所以∆w i 和∆b 的计算公式中有α项。

X i =dA dw i 注意到1=dA

db ∆w i =α∙∆A ·dA

dw i

=αY − Y df dA dA dw i

于是∆b =α·∆A ∙

dA

db =αY − Y

df dA dA db

链式法则?

0.3.逻辑回归

可是Y−Y并不是导数的形式呀,前一页的公式因为它的存在变得不和谐了。。。

强迫症的解决方案:强行让Y−Y等于一个导数形式。

寻找一个自变量为f A的函数,赋予它一个名称——LOSS,使得dLOSS

df A

=Y−Y=Y−f A

事实上,真的存在这样的LOSS函数,并且据我所知,至少有两种不同的基本形式,这里就不列举出来了。

引入LOSS函数的好处:1.让迭代更新公式变得和谐优美,形式统一,方便表述、推导和扩展。

2.LOSS函数值越小,模型拟合效果越好,通过观察迭代中LOSS函数值的变化,判断算法是否收敛。

3.LOSS函数加入正则化项,可以降低过拟合风险。

4.(貌似)可以通过改变权重来实现目标风险最小化。

0.4.人工神经元与随机梯度下降法

可以将一个逻辑回归模型具象成一个神经元

(加权求和—>激发函数)

进一步概括

再回顾总结一下权重估计的迭代更新算法

对w i 和b 赋随机数初始值;For ger=1 to ger_num

For each 单样本in 训练样本数据集%(开始一次迭代)

根据当前b 、w i 和样本数据中的X i 计算神经元的输出f;计算dLOSS/df;

使用链式法则计算w i 的变化量∆w i 即α·dLOSS/dw i ;

(开下脑洞,其实由链式法则也可以计算∆X i 即dLOSS/dX i ,这一点在下一页中用到;)

更新权重值w i ;%(结束一次迭代)End End

上述算法的学名叫做:Mini-batch Stochastic Gradient Descent 其实也可以每次迭代中使用多个训练样本甚至全部训练样本,具体操作简单来说就是“变化量取平均”。实践中,一般每次迭代使用多个训练样本。

0.5. BP人工神经网络

设想两个人工神经元串联的模型: (模型1)

神经元N1神经元N2

输出f N2

在使用随机梯度下降法训练时,如何计算权重值变化量?

输出f N1

对于神经元N2中的权重,按照前面讲的方法计算权重值变化量即可。

对于神经元N1中的权重,先计算dLOSS

df N1

=

dLOSS

dA N2

dA N2

df N1

=∆A N2∙w N2(w

N2

为神经元N2中对应输入f N1的权重),

然后采用链式法则计算神经元N1自身权重值的变化量即可。

可以想象,任意多个人工神经元串联,都可以使用随机梯度下降法训练权重!

(至少在计算上没BUG)

相关文档
最新文档