(一)逻辑回归及其代价函数 — 吴恩达深度学习笔记

逻辑回归 — 适用于二分类问题

使用逻辑回归算法会得到的输出标签y,y在监督问题中全是0或者1,因此这是一种针对二分类问题的算法。

给定的输入特征向量x和一幅图像对应,我们希望识别这是否是一张猫的图片。因此我们想要一种算法能够输出一个预测值, 我们称之为y帽(yhat

y

^

widehat{y}

y

),这代表对真是标签Y的估计。形式上讲yhat是当给定特定输入特征x时,预测标签y为1的概率。换种说法就是当x是一张图像时,你想要yhat告诉你这张图是猫的概率。

x是一个

x

n

x_n

xn维的向量,约定逻辑回归的参数是w,w也是一个

x

n

x_n

xn维的向量,另外,参数b是一个实数,因此给定了一个输入x,以及参数w和b,那么如何产生输出yhat呢?

尝试让

y

^

=

w

.

T

x

+

b

widehat{y} = w.T*x+b

y

=w.Tx+b,这是输入x的一个线性函数输出,事实上,如果使用线性回归,就是这样操作的,但是这对二分类并不是一个好的算法,因为你希望yhat能够输出y为1的概率。因此yhat的值应该在0和1之间。而这种算法很难实现这个要求。因为

w

.

T

x

+

b

w.T*x+b

w.Tx+b可能会比1大很多或者是一个负数,这对于概率就失去了意义。

让逻辑回归中的输出yhat等于这个值应用sigmoid函数的结果。

G

i

v

e

  

x

,

w

a

n

t

  

y

^

=

P

(

y

=

1

x

)

  

(

0

y

^

1

)

Give x, want widehat{y} = P(y =1 | x) ,其中 (0 ≤ widehat{y} ≤1)

Give  x,want  y

=P(y=1x)  (0y

1)

在这里插入图片描述

sigmoid函数是这样的,如果水平轴的标签为z,那么函数sigmoid(z)是这样的,它从0平滑地升高到1,它会在0.5处和竖直轴交叉。
在这里插入图片描述

因此这就是sigmoid(z)函数,这里z表示

w

.

T

x

+

b

(w.T*x+b)

w.Tx+b

当z是一个实数,sigmoid(z)就等于

1

1

+

e

z

frac 1 {1+e^{-z}}

1+ez1

这里需要注意几件事情,如果z非常大时,e^(-z)就会接近0,所以sigmoid(z)就约等于

1

1

+

0

frac 1 {1+0}

1+01,即等于1。就如上图显示,如果z非常大时,sigmoid(z)也就会越接近1。相反的,如果z非常小时,sigmoid(z)也就会越接近0。

因此当你实现逻辑回归时,你的目标是尽力学到参数w和b,因此yhat就能很好地估计y等于1的概率。

当进行神经网络编程时,我们通常会将参数w和参数b分开看待。这里的b对应一个偏置量。

一些其他的课程会这样做
在这里插入图片描述

事实上,实现神经网络时,将b和w当做互相独立的参数会更加简单。

接下来为了改变参数w和b,需要定义一个代价函数(逻辑回归代价函数)。

逻辑回归代价函数

为了优化逻辑回归模型的参数w和b,需要定义一个代价函数。
在这里插入图片描述

为了了解你的模型参数,这里有一组用于优化m参数的示例。,你会很自然想找出参数w和b,至少在获得训练集和输出值时,对于训练集的假定,我们只需提出y-hat(i)将接近从训练集中获得的实际y_i。为了更详细的描述上述方程式。
上标括号指的是数据
X、Y、Z以及其他字母与i-th训练示例相关联

损失函数(误差函数)可以用来检测算法运行情况,如在算法输出时定义损失,yhat和实标Y有可能是一个或者半个平方误差

L

(

y

^

,

y

)

=

1

2

(

y

^

,

y

)

2

L(widehat{y},y) = frac 1 2(widehat{y},y)^2

L(y

,y)=21(y

,y)2,你可以如此操作,但是在一般逻辑回归里不进行此操作,因为当研究参数时,我们讨论的优化问题会变为非凸问题,所以优化问题会产生多个局部最优解,梯度算法也就无法找到全局最优解。

函数L被成为损失函数,需要进行设定,才能在实标为y时,对输出值yhat进行检测,平方误差整体是个合理的选择,除了无法让梯度下降算法良好运行,所以在逻辑回归中,我们回设定一个不同的损失函数充当平方误差,这样能产生一个凸象最优问题,将使之后的优化问题变得容易。所以,实际使用的逻辑回归损失函数为

L

(

y

^

,

y

)

=

(

y

l

o

g

y

^

+

(

1

y

)

l

o

g

(

1

y

^

)

)

L(widehat{y},y) = -(ylogwidehat{y} + (1-y)log(1-widehat{y}))

L(y

,y)=(ylogy

+(1y)log(1y

))

为什么使用这个损失函数有意义,如果使用平方误差,平方误差需要尽可能小,在此逻辑回归损失函数里,我们也要让这个数值尽可能小。
举个例子:
1、我们假定y=1,

L

(

y

^

,

y

)

=

l

o

g

y

^

L(widehat{y},y) = -logwidehat{y}

L(y

,y)=logy

,要使得L特别小,那么就要使得

l

o

g

y

^

logwidehat{y}

logy

数值必须特别大,但是

y

^

widehat{y}

y

时sigmoid函数,它无法大于1,也是是说如果y=1,

y

^

widehat{y}

y

值要尽可能打,但却打不过1,所以

y

^

widehat{y}

y

要无限接近1。
2、我们假定y=0,即损失函数

L

(

y

^

,

y

)

=

l

o

g

(

1

y

^

)

L(widehat{y},y) = -log(1-widehat{y})

L(y

,y)=log(1y

),所以在学习过程中,需要将损失函数值变小,意味着

l

o

g

(

1

y

^

)

log(1-widehat{y})

log(1y

)的值要大,即要使得

y

^

widehat{y}

y

尽可能的小。即如果y=0,损失函数将会作用于参数使得yhat无限趋近于0.

目前有很多函数具有拉菲拉效应,也就是如果y=1,yhat的值要变大;如果y=0,yhat的值要变小。

接下来设定代价函数,来检测优化组的整体运行情况,所以运用参数w和b的代价函数J是取m(训练集)的平均值、损失函数的总和运用于训练集,你的逻辑回归算法预计的输出值,用于一组特定的w和b参数。
所以我们要做的是损失函数适用于像这样单一的训练集。
代价函数:

C

o

s

t

 

F

u

n

c

t

i

o

n

:

 

J

(

w

,

b

)

=

1

m

i

=

1

m

L

(

y

^

,

y

)

=

1

m

(

i

=

1

m

(

y

(

i

)

l

o

g

y

^

(

i

)

+

(

1

y

(

i

)

)

l

o

g

(

1

y

^

(

i

)

)

)

)

Cost Function: J(w,b) = frac 1 mdisplaystylesum_{i=1}^mL(widehat{y},y) = -frac 1 m(displaystylesum_{i=1}^m(y^{(i)}logwidehat{y}^{(i)} + (1-y^{(i)})log(1-widehat{y}^{(i)}) ))

Cost Function: J(w,b)=m1i=1mL(y

,y)=m1(i=1m(y(i)logy

(i)+(1y(i))log(1y

(i))))

L

(

y

^

,

y

)

=

(

y

l

o

g

y

^

+

(

1

y

)

l

o

g

(

1

y

^

)

)

L(widehat{y},y) = -(ylogwidehat{y} + (1-y)log(1-widehat{y}))

L(y

,y)=(ylogy

+(1y)log(1y

)),此损失函数,只适用于单个的训练样本。

Cost Function基于参数的总损失,所以在训练逻辑回归模型时,我们要找到合适的参数w和b,让代价函数J尽可能地小。
逻辑回归可以被看作是一个非常小的神经网络。

Tips:符号定义

x:表示一个

n

x

n_x

nx维数据,为输入数据,维度为(

n

x

n_x

nx,1)

y:表示输出的结果,取值为(0,1)

(

x

(

i

)

,

y

(

i

)

)

(x^{(i)},y^{(i)})

(x(i),y(i)):表示第i组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据。

X

=

[

(

x

(

1

)

,

x

(

2

)

,

.

.

.

,

x

(

m

)

)

]

X=[(x^{(1)},x^{(2)},...,x^{(m)})]

X=[(x(1),x(2),...,x(m))]:表示所有训练数据集的输入值,放在一个

n

x

n_x

nxx m的矩阵中,其中m表示样本数目。

Y

=

[

(

y

(

1

)

,

y

(

2

)

,

.

.

.

,

y

(

m

)

)

]

Y=[(y^{(1)},y^{(2)},...,y^{(m)})]

Y=[(y(1),y(2),...,y(m))]:表示所有训练数据集的输出值,维度为 1 x m。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>