对于深度学习的基础知识,我学习的是吴恩达教授的视频课,看完之后醍醐灌顶,并将其笔记(为黄海广博士团队整理笔记)自我梳理一番,方便自己的学习。
逻辑回归是一个用于二分类的算法
首先我们从一个问题开始说起,这里有一个二分类问题的例子,假如你有一张图片作为输入,比如这只猫,如果识别这张图片为猫,则输出标签1作为结果;如果识别出不是猫,那么输出标签0作为结果。现在我们可以用字母
y
y
y来表示输出的结果标签,如下图所示:
图3-1
我们来看看一张图片在计算机中是如何表示的,为了保存一张图片,需要保存三个矩阵,它们分别对应图片中的蓝、绿、红三种颜色通道,如果你的图片大小为64x64像素,那么你就有三个规模为64x64的矩阵,分别对应图片中红、绿、蓝三种像素的强度值。为了便于表示,这里我画了三个很小的矩阵,注意它们的规模为5x4 而不是64x64,如下图所示:
图3-2
为了把这些像素值放到一个特征向量中,我们需要把这些像素值提取出来,然后放入一个特征向量。为了把这些像素值转换为特征向量 ,我们需要像下面这样定义一个特征向量 x来表示这张图片,我们把所有的像素都取出来,例如255、134等等,直到取完所有的蓝色像素,接着最后是255、134、…、255、231等等,直到得到一个特征向量,把图片中所有的蓝、绿、红像素值都列出来。如果图片的大小为64x64像素,那么向量 x的总维度,将是64乘以64乘以3,这是三个像素矩阵中像素的总量。在这个例子中结果为
n
x
n_x
nx=12,288。现在我们用
n
x
n_x
nx,来表示输入特征向量的维度,有时候为了简洁,我会直接用小写的n来表示输入特征向量的维度。所以在二分类问题中,我们的目标就是习得一个分类器,它以图片的特征向量作为输入,然后预测输出结果为1还是0,也就是预测图片中是否有猫:
图3-3
符号定义(今后学习中将经常用到的符号) :
x
x
x:表示一个
n
x
n_x
nx维数据,为输入数据,维度为
(
n
x
,
1
)
(n_x,1)
(nx,1);
y
y
y:表示输出结果,取值为
(
0
,
1
)
(0,1)
(0,1);
(
x
(
i
)
x^{(i)}
x(i),
y
(
i
)
y^{(i)}
y(i)):表示第
i
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
×
m
n_x×m
nx×m的矩阵中,其中表示样本数目,比如将
m
m
m幅cat图片放入
X
X
X数据集中为:
X
=
[
255
x
(
2
)
.
.
.
x
(
m
)
134
x
(
2
)
.
.
.
x
(
m
)
.
.
.
.
.
.
.
.
.
.
.
.
255
x
(
2
)
.
.
.
x
(
m
)
134
x
(
2
)
.
.
.
x
(
m
)
.
.
.
.
.
.
.
.
.
.
.
.
255
x
(
2
)
.
.
.
x
(
m
)
231
x
(
2
)
.
.
.
x
(
m
)
]
X= \left[ \begin{matrix} 255 & x^{(2)} & ... & x^{(m)} \\ 134 & x^{(2)} & ... & x^{(m)} \\ ... & ... & ... & ...\\ 255 & x^{(2)} & ... & x^{(m)} \\ 134 & x^{(2)} & ... & x^{(m)} \\ ... & ... & ... & ...\\ 255 & x^{(2)} & ... & x^{(m)} \\ 231 & x^{(2)} & ... & x^{(m)} \end{matrix} \right]
X=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡255134...255134...255231x(2)x(2)...x(2)x(2)...x(2)x(2)........................x(m)x(m)...x(m)x(m)...x(m)x(m)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
图3-4
Y
=
[
y
(
1
)
,
y
(
2
)
,
.
.
.
y
(
m
)
]
Y=[y^{(1)},y^{(2)},...y^{(m)}]
Y=[y(1),y(2),...y(m)]:对应表示所有训练数据集的输出值,维度为
1
×
m
1×m
1×m,比如cat图的标签结果为:
Y
=
[
1
,
0...1
]
Y=[1,0...1]
Y=[1,0...1]。
逻辑回归的Hypothesis Function(假设函数)
对于二元分类问题来讲,给定一个输入特征向量
X
X
X,它可能对应一张图片,你想识别这张图片识别看它是否是一只猫或者不是一只猫的图片,你想要一个算法能够输出预测,你只能称之为
y
^
\widehat{y}
y
,也就是你对实际值
y
y
y的估计。更正式地来说,你想让
y
^
\widehat{y}
y
表示
y
y
y 等于1的一种可能性或者是机会,前提条件是给定了输入特征
X
X
X。换句话来说,如果
X
X
X是我们在上面看到的图片,你想让
y
^
\widehat{y}
y
来告诉你这是一只猫的图片的机率有多大。
X
X
X是一个
n
x
n_x
nx维的向量(相当于有个
n
x
n_x
nx)我们用来
w
w
w表示逻辑回归的参数,这也是一个
n
x
n_x
nx维向量(因为
w
w
w实际上是特征权重,维度与特征向量相同),参数里面还有
b
b
b,这是一个实数(表示偏差)。所以给出输入
x
x
x以及参数
w
w
w和
b
b
b之后,我们怎样产生输出预测值
y
^
\widehat{y}
y
,一件你可以尝试却不可行的事是让
y
^
\widehat{y}
y
=
w
T
x
+
b
w^Tx+b
wTx+b。
图3-5
这时候我们得到的是一个关于输入
x
x
x的线性函数,但是这对于二元分类问题来讲不是一个非常好的算法,因为你想让
y
^
\widehat{y}
y
表示
y
y
y实际值等于1的机率的话,
y
^
\widehat{y}
y
应该在0到1之间。这是一个需要解决的问题,因为
w
T
x
+
b
w^Tx+b
wTx+b可能比1要大得多,或者甚至为一个负值。对于你想要的在0和1之间的概率来说它是没有意义的,因此在逻辑回归中,我们的输出应该是
y
^
\widehat{y}
y
等于由上面得到的线性函数式子作为自变量的
s
i
g
m
o
i
d
sigmoid
sigmoid函数中,公式如上图最下面所示,将线性函数转换为非线性函数。那么此时函数变为:
f
(
z
)
=
1
1
+
e
−
z
f(z)=\frac{1}{1+e^{-z}}
f(z)=1+e−z1
图3-6
其中z=
w
T
x
+
b
w^Tx+b
wTx+b,带如公式即为:
f
(
x
)
=
1
1
+
e
−
(
w
T
x
+
b
)
f(x)=\frac{1}{1+e^{-(w^Tx+b)}}
f(x)=1+e−(wTx+b)1
图3-7
现在单拿出图3-6来分析,即关于
z
z
z的
s
i
g
m
o
i
d
sigmoid
sigmoid函数,函数图如下:
由函数图可以知道,
z
z
z越大,
e
−
z
e^{-z}
e−z越小趋于0,
f
(
z
)
f(z)
f(z)趋于1,
z
z
z越小,
e
−
z
e^{-z}
e−z越大趋于无穷,
f
(
z
)
f(z)
f(z)趋于0,即
s
i
g
m
o
i
d
sigmoid
sigmoid函数可以将
y
^
\widehat{y}
y
控制在
[
0
,
1
]
[0,1]
[0,1]之间,因此当你实现逻辑回归时,你的工作就是去让机器学习参数
w
w
w以及
b
b
b,这样才使得
y
^
\widehat{y}
y
成为
y
=
1
y=1
y=1对这一情况的概率的一个很好的估计。
此篇解释了深度学习所用到的最基本函数(假设函数),以及为什么要用到激活函数。
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。
深度学习之逻辑回归-假设函数
最新推荐文章于 2024-06-30 13:47:00 发布