多元分类器
问题
以手写数字识别为例,将一张图片中每个像素的浓度排成一排,形成一个在M维空间\((x_{1},x_{2},\cdots ,x_{M})\)的一个空间向量,将这个空间划分为 \(0\) 到 \(9\) 共 \(10\) 个区域,求给定图片落在这些空间的概率。
对于M维空间: \[ x = \begin{pmatrix} x_{1}, & x_{2}, & \cdots, & x_{M}\tag{1.1} \end{pmatrix} \] 将其划分为\(K\)个区域时,首先要准备出 $K $ 个一次函数: \[ f_{k}(x_{1},\cdots ,x_{M})=w_{0k} + w_{1k}x_{1}+\cdots + w_{Mk}x_{M} \left ( k=1,\cdots ,K\right ) \tag{1.2} \] 那么,点\((x_{1},x_{2},\cdots ,x_{M})\)是否在第 \(k\) 个区域中的概率就可以用如下Softmax函数来计算: \[ P_{k}(x_{1},x_{2},\cdots ,x_{M})=\frac{e^{f_{k}(x_{1},x_{2},\cdots ,x_{M})}}{\sum_{k^{'}=1}^{K}e^{f_{k^{'}}(x_{1},x_{2},\cdots ,x_{M})}} \tag{1.3} \]
转化
假设全部训练集数据有$ N$ 个,那么第 \(n\) 个数据可以表示为: \[ x_{n} = \begin{pmatrix} x_{1n}, & x_{2n}, & \cdots, & x_{Mn} \tag{1.4} \end{pmatrix} \] 所有数据排列而成的矩阵 $ X$ 定义如下: \[ X = \begin{pmatrix} x_{11} & x_{21} & ... & x_{M1} \\ x_{12} & x_{22} & ... & x_{M2} \\ \vdots & \vdots & \vdots & \vdots \\ x_{1N} & x_{2N} & ... & x_{MN} \tag{1.5} \end{pmatrix} \] 如下定义了由公式\(1.2\)的一次函数系数排列而成的矩阵\(W\)以及由常数向量排列而成的\(w\): \[ W = \begin{pmatrix} w_{11} & w_{12} & \cdots & w_{1K} \\ w_{21} & w_{22} & \cdots & w_{2K} \\ \vdots & \vdots & \vdots & \vdots \\ w_{M1} & w_{M2} & \cdots & w_{M3} \end{pmatrix},w=(w_{01},w_{02},\cdots ,w_{0K}) \tag{1.6} \] 用上面的定义可以把公式\(1.2\)的一次函数用如下公式表示出来。 \[ F=XW \oplus w \tag{1.7} \] 这里的\(F\)就表示把第\(n\)个数据\(x_{n}\)代入第\(k\)个区域的一次函数 \(f_{k}(x_{n})\)后的值。 \[ F = \begin{pmatrix} f_{1}(x_{1}) & f_{2}(x_{1}) & \cdots & f_{K}(x_{1}) \\ f_{1}(x_{2}) & f_{2}(x_{2}) & \cdots & f_{K}(x_{2}) \\ \vdots & \vdots & \vdots & \vdots \\ f_{1}(x_{N}) & f_{2}(x_{N}) & \cdots & f_{K}(x_{N}) \tag{1.8} \end{pmatrix} \] 从左边的矩阵\(F\)中取出任意一个元素,都可以由如下公式计算出来,得到的结果恰好与公式 \(1.2\) 相同。 \[ f_{k}(x_{n})=w_{0k}+w_{1k}x_{1n}+w_{2k}x_{2n}+\cdots +w_{Mk}x_{Mn} \tag{1.9} \] 用公式\(1.3\)的Softmax函数把函数结果转换为概率形式。那么表示第\(n\)个数据\(x_{n}\)分别属于\(k=1,\cdots ,K\)部分的概率\(P_{k}(x_{n})\)就可以用如下算式计算出来。 \[ P_{k}(x_{n}) = \frac{e^{f_{k}(x_{n})}}{\sum_{k^{'}=1}^{K}e^{f_{k^{'}}(x_{n})}} \tag{2.1} \]
TensorFlow
这个公式所需要的元素全部包含在公式 \(1.8\)
中,如果用这个矩阵来进行矩阵运算还是比较复杂的。这里我们使用TensorFlow
的函数 tf.nn.softmax,可将公式 \(1.8\) 代入公式 \(2.1\) 中,自动算出概率 \(P\) : \[
P=tf.nn.softmax(F) \tag{2.2}
\] 这样,\(P\)
就可以表示为如下定义好的矩阵: \[
P=\begin{pmatrix}
P_{1}(x_{1}) & P_{2}(x_{1}) & \cdots & P_{K}(x_{1}) \\
P_{1}(x_{2}) & P_{2}(x_{2}) & \cdots & P_{K}(x_{2}) \\
\vdots & \vdots & \vdots & \vdots \\
P_{1}(x_{N}) & P_{2}(x_{N}) & \cdots & P_{K}(x_{N})
\tag{2.3}
\end{pmatrix}
\]