深度学习-神经网络原理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