前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >神经网络基础模型--Logistic Regression的理论和实践

神经网络基础模型--Logistic Regression的理论和实践

作者头像
zenRRan
发布2018-04-10 10:55:37
6630
发布2018-04-10 10:55:37
举报
文章被收录于专栏:深度学习自然语言处理

1

概述

Logistic Regression 即 逻辑回归,属于监督学习,输入x(特征数据),输出为0或1(显然是二分类)。为什么要用逻辑回归讲神经网络基础呢?我觉得这个相对比较简单,易懂,而且有神经网络基本都会用到的激活函数(Activation Function)。

2

正向传播,搭建神经网络

1

比如我们要给二维平面的点做分类,则输入的是特征有

,

(即点的x,y坐标)。参数我们设置三个(一个特征配一个参数,再加一个biase),这里我设为

,在加上一个biase

。这样我们就得到了一个函数值:

我们设置值为z,则此时我们已经对原始数据进行了第一次处理,也就是得到我们第一个神经元

(注:我们也可以把参数

放到

的对应线上)

2

可是我们目的是为了分类0或1,也就是输出的结果起码得在0-1之间。可是我们根本不知道z的值有多大,也就无法控制范围,所以我们用一个函数来完美起到可以把结果限制到0-1范围内,这个函数是长这个样子

,我们对它做个测验(->趋近于):

当x->正无穷,值->1;

当x->负无穷时,值->0;

当x=0时,值=1/2。

大概图像长这个样子:

像这样将结果做一次函数特殊处理的,我们称之为Activation Function,记这个函数为sigmod。

因为接下来要用到它的导数,这里我推导下它的求导过程,以后记住结果就行:

这次我们第二次对数据做了处理,就可以再添加一个神经元了:

其中

这里表示sigmod,a表示它的值。

3

结果我们已经计算出来了,是a,那么我们怎样才能更新我们的参数呢?当然是赶紧找到损失函数啦。

我们先回顾下我们之前所用过的最简单的损失函数

(

预测值,y为真实值)。可是这种损失函数在参数w大于1个的时候,就很有可能出现多个极值点(比如它的函数这个样子

),而导致梯度下降法无法得到最优解。

逻辑回归损失函数是这样的

if y=1,则

,想要

越大,则就要

越小。

if y=0,则

,想要

越小,则就要

越小。

综上所述,要想使

精确地靠近y,仅仅使

达到最小即可。

这次就是我们的第三次也是最后一次处理数据了,所以又添加了一个损失函数神经元:

(其中的a就是上面的

)

上面的整个数据传送过程,我们称之为正向传播。

3

反向传播,更新参数

要想通过损失函数L对

进行更新,就得求L的

上的梯度,怎么求梯度呢?很显然,链式求导呀。

我推导了下:

(上图我标出的

是因为如果下面的代码dz没看懂的话瞅瞅这个)

然后我们对参数进行更新:

(alpha为学习率)

这个过程就是反向传播。

4

代码实现

生成数据

初始化数据点,绿点为1类,红点为0类。

图像显示:

规范数据(缩小到-1 — 1,不清楚原因的可以看前面的梯度下降算法的相关说明)

图为:

sigmod函数

初始化参数

初始成的数据:

画图函数

训练过程

上面讲的很详细了,应该能看懂

第一个图:

第二张图:

后面的一张图:

成功

画损失函数

损失函数图:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

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

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

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