吴恩达机器学习笔记(五)

神经网络

1.1 背景

之前的课程中讲解了使用线性回归与逻辑回归实现回归与分类任务,对于比较复杂的问题,构造的假设函数都是很复杂的 非线性假设,如下所示的数据,如果我们想要实现对两类数据的分类,可能需要构造一个如下所示的逻辑回归假设:
g [ θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 x 2 + θ 4 x 1 2 x 2 + θ 5 x 1 3 x 2 + θ 6 x 1 x 2 2 + ⋯   ] g\left[ \theta_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_1x_2 + \theta_4x_1^2x_2 + \theta_5x_1^3x_2 + \theta_6x_1x_2^2 + \cdots \right] g[θ0+θ1x1+θ2x2+θ3x1x2+θ4x12x2+θ5x13x2+θ6x1x22+]

在这里插入图片描述

可以看到,我们通过复杂的多项式假设函数,实现了分类问题,但是其中包含了很多项,使得假设函数太复杂。

如果一个数据包含多个特征 x 1 , x 2 , x 3 , ⋯   , x n x_1,x_2,x_3,\cdots,x_n x1,x2,x3,,xn,如果我们仍然想要使用多项式回归,那么仅仅二次项 x 1 2 , x 1 x 2 , x 1 x 3 , ⋯ x_1^2,x_1x_2,x_1x_3,\cdots x12,x1x2,x1x3, 的个数都会以 O ( n 2 ) O(n^2) O(n2) 的数量级增大,而如果想要在多项式中包含三次项 x 1 3 , x 1 x 2 x 3 , x 1 x 2 x 4 , ⋯ x_1^3,x_1x_2x_3,x_1x_2x_4,\cdots x13,x1x2x3,x1x2x4, ,其项数会以 O ( n 3 ) O(n^3) O(n3) 的量级增大,并且由于特征项过多,会造成过拟合或计算量过大的问题。

对于如下的一张汽车图片,如果图片大小为 50 × 50 50\times 50 50×50,那么其特征的个数就有 2500 2500 2500 个,如果直接使用多项式回归,其中二次项的个数就能达到三百多万,我们找到三百多万特征表示一张图片代价太大。

在这里插入图片描述
所以在特征很多时,使用线性回归或逻辑回归的假设函数是一个非常坏的选择,所以对于特征过多的问题,我们可以选择神经网络作为假设函数。

神经网络的方法最初是为了模拟人脑实现人工智能,但是由于一些原因中间沉寂了一段时间,近些年随着运算能力的提升,这种方法被广泛应用到机器学习中。由于人的神经具有很强的学习能力,所以人们试图构建和人体神经相似的学习过程。

1.2 神经网络的表示

下图是人体神经元的结构,通过树突到轴突末梢的信号传递,实现信息的传递。多个神经元就组成了神经。
在这里插入图片描述
我们在计算机上构造一个 逻辑单元 来模拟 神经元,下图就是一个逻辑神经元,

在这里插入图片描述
该神经元也表示一个假设函数:
h θ ( x ) = g ( θ T x ) = g ( θ 1 x 1 + θ 2 x 2 + θ 3 x 3 ) h_\theta(x)=g(\theta^Tx)=g(\theta_1 x_1 + \theta_2 x_2 + \theta_3 x_3) hθ(x)=g(θTx)=g(θ1x1+θ2x2+θ3x3)

其中 x = [ x 1 x 2 x 3 ] x=\left[\begin{matrix}x_1 \\ x_2 \\ x_3\end{matrix}\right] x=x1x2x3 表示输入的特征, θ = [ θ 1 θ 2 θ 3 ] \theta=\left[\begin{matrix}\theta_1 \\ \theta_2 \\ \theta_3\end{matrix}\right] θ=θ1θ2θ3 表示参数(也称为权重), g ( x ) g(x) g(x) 表示激活函数。有时也会加入 x 0 = 1 x_0=1 x0=1 的偏置项,其包含偏置参数 θ 0 \theta_0 θ0,如下所示。
h θ ( x ) = g ( θ T x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 ) h_\theta(x)=g(\theta^Tx)=g(\theta_0 + \theta_1 x_1 + \theta_2 x_2 + \theta_3 x_3) hθ(x)=g(θTx)=g(θ0+θ1x1+θ2x2+θ3x3)

在这里插入图片描述
如果激活函数使用之前说的 Sigmoid 函数,那么就称为带有 Sigmoid 激活函数的神经元。

神经网络 其实就是一组神经元连接在一起的集合,下图表示一个三层的神经网络,其中第一层称为 输入层,最后一层为 输出层,除输入和输出层的其他层为 隐藏层。其中的 a i ( j ) a_i^{(j)} ai(j) 表示第 j j j 层的第 i i i 个元素, θ ( j ) \theta^{(j)} θ(j) 表示第 j j j 层到第 j + 1 j+1 j+1 层的映射矩阵。
在这里插入图片描述

上图的计算过程如下所示,首先计算第二层的结果:
a 1 ( 2 ) = g ( θ 11 ( 1 ) x 1 + θ 12 ( 1 ) x 2 + θ 13 ( 1 ) x 3 ) a 2 ( 2 ) = g ( θ 21 ( 1 ) x 1 + θ 22 ( 1 ) x 2 + θ 23 ( 1 ) x 3 ) \begin{aligned} a_1^{(2)} = g(\theta_{11}^{(1)}x_1 + \theta_{12}^{(1)}x_2 + \theta_{13}^{(1)}x_3) \\ a_2^{(2)} = g(\theta_{21}^{(1)}x_1 + \theta_{22}^{(1)}x_2 + \theta_{23}^{(1)}x_3) \\ \end{aligned} a1(2)=g(θ11(1)x1+θ12(1)x2+θ13(1)x3)a2(2)=g(θ21(1)x1+θ22(1)x2+θ23(1)x3)

再根据第二层的结果得到整个神经网络的输出:
h θ ( x ) = a ( 3 ) = g ( θ 1 ( 2 ) a 1 ( 2 ) + θ 2 ( 2 ) a 2 ( 2 ) ) h_\theta(x)=a^{(3)}=g(\theta^{(2)}_1a_1^{(2)} + \theta^{(2)}_2a_2^{(2)} ) hθ(x)=a(3)=g(θ1(2)a1(2)+θ2(2)a2(2))

如下图,如果我们加入偏置项 x 0 = 1 , a 0 ( 2 ) = 1 x_0=1,a_0^{(2)}=1 x0=1,a0(2)=1,那么整个计算过程变为:
a 1 ( 2 ) = g ( θ 10 ( 1 ) x 0 + θ 11 ( 1 ) x 1 + θ 12 ( 1 ) x 2 + θ 13 ( 1 ) x 3 ) a 2 ( 2 ) = g ( θ 20 ( 1 ) x 0 + θ 21 ( 1 ) x 1 + θ 22 ( 1 ) x 2 + θ 23 ( 1 ) x 3 ) h θ ( x ) = a ( 3 ) = g ( θ 0 ( 2 ) a 0 ( 2 ) + θ 1 ( 2 ) a 1 ( 2 ) + θ 2 ( 2 ) a 2 ( 2 ) ) \begin{aligned} a_1^{(2)} &= g(\theta_{10}^{(1)}x_0 +\theta_{11}^{(1)}x_1 + \theta_{12}^{(1)}x_2 + \theta_{13}^{(1)}x_3) \\ a_2^{(2)} &= g(\theta_{20}^{(1)}x_0 +\theta_{21}^{(1)}x_1 + \theta_{22}^{(1)}x_2 + \theta_{23}^{(1)}x_3) \\ h_\theta(x) =a^{(3)} & =g(\theta^{(2)}_0 a_0^{(2)} + \theta^{(2)}_1a_1^{(2)} + \theta^{(2)}_2a_2^{(2)} ) \end{aligned} a1(2)a2(2)hθ(x)=a(3)=g(θ10(1)x0+θ11(1)x1+θ12(1)x2+θ13(1)x3)=g(θ20(1)x0+θ21(1)x1+θ22(1)x2+θ23(1)x3)=g(θ0(2)a0(2)+θ1(2)a1(2)+θ2(2)a2(2))
在这里插入图片描述

对于其中的参数 θ \theta θ 和输入 x x x ,我们可以将他们写成矩阵的形式:
x = [ x 0 x 1 x 2 x 3 ] , θ ( 1 ) = [ θ 10 ( 1 ) θ 11 ( 1 ) θ 12 ( 1 ) θ 13 ( 1 ) θ 20 ( 1 ) θ 21 ( 1 ) θ 22 ( 1 ) θ 23 ( 1 ) ] , a ( 2 ) = [ a 0 ( 2 ) a 1 ( 2 ) a 2 ( 2 ) ] , θ ( 2 ) = [ θ 10 ( 2 ) θ 11 ( 2 ) θ 12 ( 2 ) ] x=\left[\begin{matrix}x_0 \\ x_1 \\ x_2 \\x_3\end{matrix}\right],\quad \theta^{(1)} = \left[\begin{matrix} \theta_{10}^{(1)} & \theta_{11}^{(1)} & \theta_{12}^{(1)} & \theta_{13}^{(1)} \\ \theta_{20}^{(1)} & \theta_{21}^{(1)} & \theta_{22}^{(1)} & \theta_{23}^{(1)} \\ \end{matrix}\right], \quad a^{(2)}=\left[\begin{matrix} a_0^{(2)} \\ a_1^{(2)} \\ a_2^{(2)} \end{matrix}\right] ,\quad \theta^{(2)} = \left[\begin{matrix} \theta_{10}^{(2)} & \theta_{11}^{(2)} & \theta_{12}^{(2)} \end{matrix}\right] x=x0x1x2x3,θ(1)=[θ10(1)θ20(1)θ11(1)θ21(1)θ12(1)θ22(1)θ13(1)θ23(1)],a(2)=a0(2)a1(2)a2(2),θ(2)=[θ10(2)θ11(2)θ12(2)]

所以上面的计算过程可以表示为:
[ a 1 ( 2 ) a 2 ( 2 ) ] = g ( θ ( 1 ) x ) = g ( [ θ 10 ( 1 ) θ 11 ( 1 ) θ 12 ( 1 ) θ 13 ( 1 ) θ 20 ( 1 ) θ 21 ( 1 ) θ 22 ( 1 ) θ 23 ( 1 ) ] [ x 0 x 1 x 2 x 3 ] ) a ( 3 ) = g ( θ ( 2 ) a ( 2 ) ) = g ( [ θ 10 ( 2 ) θ 11 ( 2 ) θ 12 ( 2 ) ] [ a 0 ( 2 ) a 1 ( 2 ) a 2 ( 2 ) ] ) \begin{aligned} \left[\begin{matrix} a_1^{(2)} \\ a_2^{(2)} \end{matrix}\right] & =g(\theta^{(1)}x)= g\left( \left[\begin{matrix} \theta_{10}^{(1)} & \theta_{11}^{(1)} & \theta_{12}^{(1)} & \theta_{13}^{(1)} \\ \theta_{20}^{(1)} & \theta_{21}^{(1)} & \theta_{22}^{(1)} & \theta_{23}^{(1)} \\ \end{matrix}\right] \left[\begin{matrix}x_0 \\ x_1 \\ x_2 \\x_3\end{matrix}\right] \right) \\ \begin{matrix}a^{(3)} \end{matrix} & = g( \theta^{(2)}a^{(2)} )= g\left( \left[\begin{matrix} \theta_{10}^{(2)} & \theta_{11}^{(2)} & \theta_{12}^{(2)} \end{matrix}\right] \left[\begin{matrix} a_0^{(2)} \\ a_1^{(2)} \\ a_2^{(2)} \end{matrix}\right] \right) \end{aligned} [a1(2)a2(2)]a(3)=g(θ(1)x)=g[θ10(1)θ20(1)θ11(1)θ21(1)θ12(1)θ22(1)θ13(1)θ23(1)]x0x1x2x3=g(θ(2)a(2))=g[θ10(2)θ11(2)θ12(2)]a0(2)a1(2)a2(2)

从上面的计算过程,我们可以看出,如果 j j j 层有 s j s_j sj 个神经元, j + 1 j+1 j+1 层有 s j + 1 s_{j+1} sj+1 个神经元,那么 θ \theta θ 参数就是一个 s j + 1 × ( s j + 1 ) s_{j+1}\times(s_j+1) sj+1×(sj+1) 的矩阵。

通过一系列计算,我们可以得到输入 x x x 通过假设函数 h θ ( x ) h_\theta(x) hθ(x) 最终的到的结果 h θ ( x ) = a ( 3 ) h_\theta(x)=a^{(3)} hθ(x)=a(3),这个计算 h ( x ) h(x) h(x) 的过程也称为 前向传播,这是因为我们将输入 x x x 向前传播,依次计算隐藏层、输出层的结果,从输入层到隐藏层再到输出层的过程就称为前向传播。

如下图所示的神经网络,如果我们选择 Sigmoid 激活函数,那么 a ( 2 ) a^{(2)} a(2) 中的每个元素都可以看作是由 x x x 通过逻辑回归的方式得到的结果(其中的参数是 θ ( 1 ) \theta^{(1)} θ(1)),而 a ( 3 ) a^{(3)} a(3) 又可以看成 a ( 2 ) a^{(2)} a(2) 中的每个元素通过逻辑回归计算得到的结果(其中的参数是 θ ( 2 ) \theta^{(2)} θ(2)),所以整个过程可以看作,首先通过第一层逻辑回归,学习到一些更加复杂和有效的特征,对这些特征再进行逻辑回归就可以得到一个更好的假设函数,我们可以通过第一层的逻辑回归快速学习任意的特征项。
在这里插入图片描述

下图所示是一个更加复杂的神经网络,该网络可以通过两层隐藏层进行两次逻辑回归,从而提取出更加有用的特征,最终实现更加高效的假设函数。
在这里插入图片描述

1.3 神经网络实现逻辑运算

这里通过具体的例子来说明神经网络是怎样计算复杂非线性函数的输入,并且介绍神经网络是怎么构成复杂的非线性假设模型。

1.3.1 利用神经元实现 AND 运算

AND 运算 是一个基本的逻辑运算,其作用在两个特征 x 1 , x 2 x_1,x_2 x1,x2 上,利用真值表可以表示为:

x 1 x_1 x1 x 2 x_2 x2 x 1  AND  x 2 x_1 \ \text{AND}\ x_2 x1 AND x2
000
100
010
111

我们可以构建如下的神经元实现该逻辑运算:
在这里插入图片描述
通过该神经元可以建立如下假设函数,其中 g ( x ) = 1 1 + e − x g(x)=\frac{1}{1+e^{-x}} g(x)=1+ex1 表示 Sigmoid 函数:
h θ ( x ) = g ( θ 0 ( 1 ) x 0 + θ 1 ( 1 ) x 1 + θ 2 ( 1 ) x 2 ) = g ( − 30 + 20 x 1 + 20 x 2 ) \begin{aligned} h_\theta(x) & = g(\theta_0^{(1)}x_0 + \theta_1^{(1)}x_1 + \theta_2^{(1)}x_2) \\ & = g(-30 + 20 x_1 + 20 x_2) \end{aligned} hθ(x)=g(θ0(1)x0+θ1(1)x1+θ2(1)x2)=g(30+20x1+20x2)

我们分别将 x 1 , x 2 x_1,x_2 x1,x2 的取值带入,根据 Sigmoid 的特点,可以得到如下的结果:

x 1 x_1 x1 x 2 x_2 x2 g ( − 30 + 20 x 1 + 20 x 2 ) g(-30 + 20 x_1 + 20 x_2) g(30+20x1+20x2)
0 0 0 0 0 0 g ( − 30 ) ≈ 0 g(-30)\approx 0 g(30)0
1 1 1 0 0 0 g ( − 10 ) ≈ 0 g(-10)\approx 0 g(10)0
0 0 0 1 1 1 g ( − 10 ) ≈ 0 g(-10)\approx 0 g(10)0
1 1 1 1 1 1 g ( 10 ) ≈ 1 g(10)\approx 1 g(10)1

根据结果可以发现,通过这个神经元,已经实现了 AND 运算。

1.3.2 利用神经元实现 OR 运算

OR 运算 是另一个基本的逻辑运算,其真值表为:

x 1 x_1 x1 x 2 x_2 x2 x 1  OR  x 2 x_1 \ \text{OR}\ x_2 x1 OR x2
000
101
011
111

同样,我们构造如下的神经元:
在这里插入图片描述
新的假设函数为:
h θ ( x ) = g ( θ 0 ( 1 ) x 0 + θ 1 ( 1 ) x 1 + θ 2 ( 1 ) x 2 ) = g ( − 10 + 20 x 1 + 20 x 2 ) \begin{aligned} h_\theta(x) & = g(\theta_0^{(1)}x_0 + \theta_1^{(1)}x_1 + \theta_2^{(1)}x_2) \\ & = g(-10 + 20 x_1 + 20 x_2) \end{aligned} hθ(x)=g(θ0(1)x0+θ1(1)x1+θ2(1)x2)=g(10+20x1+20x2)

计算结果为:

x 1 x_1 x1 x 2 x_2 x2 g ( − 10 + 20 x 1 + 20 x 2 ) g(-10 + 20 x_1 + 20 x_2) g(10+20x1+20x2)
0 0 0 0 0 0 g ( − 10 ) ≈ 0 g(-10)\approx 0 g(10)0
1 1 1 0 0 0 g ( 10 ) ≈ 1 g(10)\approx 1 g(10)1
0 0 0 1 1 1 g ( 10 ) ≈ 1 g(10)\approx 1 g(10)1
1 1 1 1 1 1 g ( 30 ) ≈ 1 g(30)\approx 1 g(30)1

1.3.3 利用神经元实现 NOT 运算

OR 运算 的真值表为:

x 1 x_1 x1 NOT  x 1 \text{NOT}\ x_1 NOT x1
01
10

构造神经元:
在这里插入图片描述

假设函数:
h θ ( x ) = g ( θ 0 ( 1 ) x 0 + θ 1 ( 1 ) x 1 ) = g ( 10 − 20 x 1 ) \begin{aligned} h_\theta(x) & = g(\theta_0^{(1)}x_0 + \theta_1^{(1)}x_1) \\ & = g(10 - 20 x_1 ) \end{aligned} hθ(x)=g(θ0(1)x0+θ1(1)x1)=g(1020x1)

计算结果:

x 1 x_1 x1 g ( 10 − 20 x 1 ) g(10 - 20 x_1 ) g(1020x1)
0 0 0 g ( 10 ) ≈ 1 g(10)\approx 1 g(10)1
1 1 1 g ( − 10 ) ≈ 0 g(-10)\approx 0 g(10)0

1.3.4 利用神经元实现 XNOR 运算

XNOR 同或 运算是一个二元运算符,当两个特征 x 1 , x 2 x_1,x_2 x1,x2 相同时结果为 1 1 1,两个特征不同时结果为 0 0 0,真值表为:

x 1 x_1 x1 x 2 x_2 x2 x 1  XNOR  x 2 x_1 \ \text{XNOR}\ x_2 x1 XNOR x2
001
100
010
111

为了能够实现同或 XNOR 运算,我们可以构建一个三层的神经网络,也就是用如下的三个神经元的组合来实现:
在这里插入图片描述

我们利用上图的三个神经元构造如下的神经网络:
在这里插入图片描述
其中:
a 1 ( 2 ) = g ( − 30 + 20 x 1 + 20 x 2 ) a 2 ( 2 ) = g ( 10 − 20 x 1 − 20 x 2 ) a 1 ( 3 ) = g ( − 10 + 20 a 1 ( 2 ) + 20 a 2 ( 2 ) ) \begin{aligned} a_1^{(2)} &= g(-30 + 20 x_1 + 20 x_2) \\ a_2^{(2)} &= g(10 - 20 x_1 - 20 x_2) \\ a_1^{(3)} &= g(-10 + 20 a_1^{(2)} + 20 a_2^{(2)}) \\ \end{aligned} a1(2)a2(2)a1(3)=g(30+20x1+20x2)=g(1020x120x2)=g(10+20a1(2)+20a2(2))

x 1 , x 2 x_1,x_2 x1,x2 的值分别带入,可以得到:

x 1 x 2 x_1 \quad x_2 x1x2 a 1 ( 2 ) a_1^{(2)} a1(2) a 2 ( 2 ) a_2^{(2)} a2(2) h θ ( x ) h_\theta(x) hθ(x)
0 0 0 \quad 0 00 g ( − 30 ) ≈ 0 g(-30) \approx 0 g(30)0 g ( 10 ) ≈ 1 \quad g(10) \approx 1 g(10)1 g ( 10 ) ≈ 1 g(10) \approx 1 g(10)1
0 1 0 \quad 1 01 g ( − 10 ) ≈ 0 g(-10) \approx 0 g(10)0 g ( − 10 ) ≈ 0 \quad g(-10) \approx 0 g(10)0 g ( − 10 ) ≈ 0 g(-10) \approx 0 g(10)0
1 0 1 \quad 0 10 g ( − 10 ) ≈ 0 g(-10) \approx 0 g(10)0 g ( − 10 ) ≈ 0 \quad g(-10) \approx 0 g(10)0 g ( − 10 ) ≈ 0 g(-10) \approx 0 g(10)0
1 1 1 \quad 1 11 g ( 10 ) ≈ 1 g(10) \approx 1 g(10)1 g ( − 30 ) ≈ 0 \quad g(-30) \approx 0 g(30)0 g ( 10 ) ≈ 1 g(10) \approx 1 g(10)1

可以看到,我们通过多个不同神经元的组合,最终得到了可以实现同或操作的逻辑门。

通过中间隐藏层,计算出关于输入的较复杂的一些特征,通过最后的输出层,构成一个可以实现更加复杂操作的非线性函数,因此层数越多,可以实现的函数就越来越复杂,也就能实现更加困难的任务。

1.4 多分类问题

为了让神经网络进行多分类任务,我们可以通过在输出层增加神经元实现,下图所示的神经网络包含四个输入神经元,每个神经元可以输出的结果为 0 0 0 1 1 1,我们可以用如下四个输出表示四种分类:
h θ ( x ) = [ 1 0 0 0 ] 或 [ 0 1 0 0 ] 或 [ 0 0 1 0 ] 或 [ 0 0 0 1 ] h_\theta(x) = \left [ \begin{matrix} 1 \\ 0 \\ 0 \\ 0 \end{matrix} \right] 或 \left [ \begin{matrix} 0 \\ 1 \\ 0 \\ 0 \end{matrix} \right] 或 \left [ \begin{matrix} 0 \\ 0 \\ 1 \\ 0 \end{matrix} \right] 或 \left [ \begin{matrix} 0 \\ 0 \\ 0 \\ 1 \end{matrix} \right] hθ(x)=1000010000100001
在这里插入图片描述

为了让训练集和输出结果对应,我们需要将训练集中的标签页表示为相同的形式,对于训练集 { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ⋯   , ( x ( n ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\cdots,(x^{(n)},y^{(m)})\} {(x(1),y(1)),(x(2),y(2)),,(x(n),y(m))},我们可以将不同类型的标签 y ( i ) y^{(i)} y(i) 表示为:
y ( i ) = [ 1 0 0 0 ] 或 [ 0 1 0 0 ] 或 [ 0 0 1 0 ] 或 [ 0 0 0 1 ] y^{(i)}= \left [ \begin{matrix} 1 \\ 0 \\ 0 \\ 0 \end{matrix} \right] 或 \left [ \begin{matrix} 0 \\ 1 \\ 0 \\ 0 \end{matrix} \right] 或 \left [ \begin{matrix} 0 \\ 0 \\ 1 \\ 0 \end{matrix} \right] 或 \left [ \begin{matrix} 0 \\ 0 \\ 0 \\ 1 \end{matrix} \right] y(i)=1000010000100001

参考:


  1. 神经网络浅讲:从神经元到深度学习
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值