其他分享
首页 > 其他分享> > 深度学习-神经网络原理1

深度学习-神经网络原理1

作者:互联网

逻辑回归基础

逻辑回归目的

逻辑回归的目的就是训练一个函数,将数据的数据输入,输出一个结果,这个结果对于不同的问题不同,对于二分类问题主要是输出一个概率值,表示是这个分类的概率。假设数据数据X为输入,Y为分类结果,计算下面这个函数:

\[\hat{y}=w·X+b \]

\[ \begin{aligned} &输入数据X 是个(m,n)的矩阵 &m是参数个数, &n是样本个数\end{aligned}\]

\[w 是个(1,m)的矩阵,b是一个实数,\hat{y}是(1,n)的矩阵 \]

对这个 函数中的值w,和b进行跳转让这个函数输出的值尽量与Y接近,减小函数误差,尽力保证输出的准确率。

计算误差

对于逻辑回归,首先需要对求得的函数值y进行一个映射,将值映射到(0,1)上,这里使用的激活函数为:

\[h(x)=\frac{1}{1+e^{-\hat{y}}}=\frac{1}{1+e^{-(w · X+b)}} \]

对于单个样本我们可以计算对应的误差,对于逻辑回归具体的损失函数为:

\[Cost(y,h(x))= \begin{cases} -log(h(x)),\quad y= 1\\ -log(1-h(x)), y=0 \end{cases} \tag{1} \]

之后对于m个样本进行,计算代价函数:

\[J(w,b)=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}log(h_{w,b}(X^{(i)}))+(1-y^{(i)})log(1-h_{w,b}(X^{(i)}))] \]

所以我们只需要对函数J进行求导,获取函数J的局部最小值。

梯度下降

对于梯度下降,这里我们需要求w和b的偏导数,通过让w和b向函数值减小方向移动减小代价函数的值。

\[\frac{dj}{dw}=\frac{dj}{d(h(x))} ·\frac{d(h(x))}{dw} \]

\[\frac{dj}{d(h(x))}=-\frac{1}{m}\sum_{i=1}^{m}[\frac{y^{(i)}}{(h_{w,b}(x^{(i)})}-\frac{(1-y^{(i)})}{1-h_{w,b}(x^{(i)})}] \]

\[\frac{d(h(x))}{dw}=(\frac{e^{-\hat{y}}}{(1+e^-\hat{y})^2})·x=(1-h(X))·x \]

最后得到的结果是:

\[\frac{dj}{dw}=\frac{1}{m}(h(x^{i}-y^i)·x \]

同理可以求出b的偏导数:

\[\frac{dj}{db}=\frac{1}{m}(h(x^{i}-y^i) \]

数据更新

在每一次循环中,我们通过梯度函数,更新w和b,公式如下

\[w:=w-\alpha\frac{dj}{dw} \]

\[b:=b-\alpha\frac{dj}{db} \]

\[\alpha 表示学习率,通常为一个0.01这样的较小值,具体需要依据数据设置 \]

总结

介绍了如何实现逻辑回归,对于神经网络,可以看成多次的逻辑回归训练,每一个隐藏层都进行一个逻辑回归,求出对应结果,但不同的是神经网络使用的激活函数并不是简单的线性函数,通过都是非线性的激活函数,线性激活函数训练出来的神经网络起始和逻辑回归的结果是一样的,所以需要使用非线性的激活函数,下篇将对神经网络的向前传播和反向传播进行一个原理的介绍。

标签:逻辑,dj,函数,frac,神经网络,dw,深度,原理,hat
来源: https://www.cnblogs.com/blackworld-sp/p/16560932.html