深度学习(21)神经网络与全连接层四: 输出方式
Outline
- y ∈ R d y∈R^d y∈Rd
- y i ∈ [ 0 , 1 ] , i = 0 , 1 , … , y d − 1 y_i∈[0,1],i=0,1,…,y_d-1 yi∈[0,1],i=0,1,…,yd−1
- y i ∈ [ 0 , 1 ] , ∑ i = 0 y d y i = 1 , i = 0 , 1 , … , y d − 1 y_i∈[0,1],∑_{i=0}^{y_d}y_i=1,\ i=0,1,…,y_d-1 yi∈[0,1],∑i=0ydyi=1, i=0,1,…,yd−1
- y i ∈ [ − 1 , 1 ] , i = 0 , 1 , … , y d − 1 y_i∈[-1,1],\ i=0,1,…,y_d-1 yi∈[−1,1], i=0,1,…,yd−1
1. y ∈ R d y∈R^d y∈Rd
- linear regression
- naïve classification with MSE
- other general prediction
-
o
u
t
=
r
e
l
u
(
X
@
W
+
b
)
out=relu(X@W+b)
out=relu(X@W+b)
- logits
2. y i ∈ [ 0 , 1 ] y_i∈[0,1] yi∈[0,1]
- binary classification
- y>0.5,→1
- y<0.5,→0
- Image Generation
- RGB图像
- RGB图像
以上图片为应用GAN的AI自动画出来的,灰常神奇~
3. sigmoid函数
(1) 目的
使用sigmoid函数的目的是将输出范围限制在[0~1]之间。
- o u t = r e l u ( X @ W + b ) out=relu(X@W+b) out=relu(X@W+b)
- sigmoid → \to →
- o u t ′ = s i g m o i d ( o u t ) out'=sigmoid(out) out′=sigmoid(out)
(2) tf.sigmoid
f
(
x
)
=
1
(
1
+
e
−
x
)
f(x)=\frac{1}{(1+e^{-x} )}
f(x)=(1+e−x)1
(a)a = tf.linspace(-6., 6, 10)
: 定义a为[-6, 6]间隔10个点;
(b)tf.sigmoid(a)
: 将a用sigmoid函数使其输出范围限制在[0, 1]之间;
(c)x = tf.random.normal([1, 28, 28])*5
: 创建1张28×28的图片,共有5张这样的图片; 其灰度值最小是-18.78872; 最大是15.466431;
(d)x = tf.sigmoid(x)
: 将x用sigmoid函数使其灰度值限制在[0, 1]之间,这样我们就可以很方便地使用matplot打印出来;
4. softmax
(1) 需求
-
y
i
∈
[
0
,
1
]
,
∑
y
i
=
1
y_i∈[0,1],∑y_i =1
yi∈[0,1],∑yi=1
在多分类问题中,我们不仅希望将其输出范围限制在[0, 1]之间,还希望所有概率和为1,这样能很方便观察出其中最有可能的值(例如手写数字识别)。 - 使用sigmoid
可以看出,sigmoid函数并不能满足这一点;
- 使用softmax
可以看出, y i ∈ [ 0 , 1 ] , ∑ y i = 1 y_i∈[0,1],∑y_i =1 yi∈[0,1],∑yi=1得到了满足;
(2) 原理
注: 一般将没有激活函数的输出成为Logits;
(3) Classification(分类实例)
(a)logits = tf.random.uniform([1, 10], minval=-2, maxval=2)
: 创建一个新的Tensor,共有10个分类,输出值的范围为[-2, 2];
(b)prob = tf.nn.softmax(logits, axis=1)
: 将其输出值进行归一化处理;
(c)tf.reduce_sum(prob, axis=1)
: 验证,其概率值的和等于1;
5. tanh
-
y
i
∈
[
−
1
,
1
]
y_i∈[-1,1]
yi∈[−1,1]
tanh
t
a
n
h
(
x
)
=
s
i
n
h
(
x
)
c
o
s
h
(
x
)
=
(
e
x
−
e
−
x
)
/
(
e
x
+
e
−
x
)
tanh(x)=\frac{sinh(x)}{cosh(x)} =(e^x-e^{-x})/(e^x+e^{-x})
tanh(x)=cosh(x)sinh(x)=(ex−e−x)/(ex+e−x)
注: tanh主要应用于LSTM;
(a)tf.tanh(a)
: 将a的输出值范围压缩到[-1, 1]之间;
参考文献:
[1] 龙良曲:《深度学习与TensorFlow2入门实战》
[2] https://medium.com/syncedreview/biggan-a-new-state-of-the-art-in-image-synthesis-cf2ec594024
[3] https://www.youtube.com/watch?v=lvNdl7yg4Pg