文章记录的内容是参加DataWhale的组队学习统计学习方法(第二版)习题解答过程中的笔记与查缺补漏!参考解答地址:感知机。
1. Minsky 与 Papert 指出:感知机因为是线性模型,所以不能表示复杂的函数,如异或 (XOR)。验证感知机为什么不能表示异或
解答思路:
- 列出异或函数(XOR)的输入和输出;
- 使用图例法证明异或问题是线性不可分的;
- 使用反证法证明感知机无法表示异或。
先来看一下异或的真值表:
\(x_1\)
|
\(x_2\)
|
\(y=x_1\oplus x_2\)
|
---|---|---|
0 | 0 | -1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | -1 |
以 \(x_1, x_2\) 为坐标轴,把上述四行每行当作一个样本点,在坐标中看一下这四个样本点的分布:
很显然,这四个样本是线性不可分的。
如果要表示异或这个函数,那么则给定对应的输入,则应该产生异或函数对应的输出。先回顾一下感知机的定义:
其中 \(x \in \mathcal{X} \subseteq \mathbb{R}^n\),\(sign\) 为符号函数:
如果要求 \(f(x)\) 表示异或函数,那么:
- 根据 \(x_1=0, x_2=0, f(x)=-1\),则 \(w \cdot x +b < 0\),可得 \(b < 0\);
- 根据 \(x_1=0, x_2=1, f(x)=1\),则 \(w_2 + b > 0\),结合 \(b < 0\),可得 \(w_2 > -b > 0\);
- 根据 \(x_1=1, x_2=0, f(x)=1\),则 \(w_1 + b > 0\),结合 \(b < 0\),可得 \(w_1 > -b > 0\);
- 根据 \(x_1=1, x_2=1\),并结合 \(w_1 + b > 0\)、\(w_2 > 0\),则 \(w_1 + w_2 + b > 0\),可得 \(f(x)=1\),与异或条件中的 \(f(x)=-1\) 矛盾。
即,感知机不能表示异或函数。
2. 模仿上一题,构建从训练数据求解感知机模型的例子
很明显,这一题的重点是感知机算法的权重的更新过程。
感知机学习算法的原始形式
输入:训练数据集 \(T=\{(x_1,y_1),(x_2,y_2),\ldots,(x_N,y_N)\}\),其中 \(x_i \in \mathcal{X} = R^n\),\(y_i \in \mathcal{Y} = \{-1, +1\}\),\(i=1,2,\ldots,N\);学习率 \(\eta (0 < \eta \leqslant 1)\);
输出:\(w,b\);感知机模型 \(f(x)=\text{sign}(w \cdot x + b)\)
(1)选取初值 \(w_0, b_0\);
(2)在训练集中选取数据 \((x_i,y_i)\);
(3) 选定损失函数,以误分类点到超平面的总距离为损失函数,\(M\) 为误分类点集合:\(L(w, b) = - \sum_{x_i \in M} y_i (w \cdot x_i + b)\)
(4)如果 \(y_i(w \cdot x_i + b) \leqslant 0\),\[\begin{array}{ll} w \leftarrow w + \eta y_i x_i \\ b \leftarrow b + \eta y_i \end{array} \](5)转至(2),直至训练集中没有误分类点。
具体的代码实现参考这里。
3. 证明以下定理:样本集线性可分的充分必要条件是正实例点所构成的凸壳与负实例点所构成的凸壳互不相交。
解答思路:
- 写出凸壳和线性可分的定义
- 证明必要性:线性可分 ⇒ 凸壳不相交
- 证明充分性:凸壳不相交 ⇒ 线性可分
先来看一下凸壳的定义(参考自统计学习方法第二版 p.47):
设集合 \(S \subset \mathbb{R}^n\) 是由 \(\mathbb{R}^n\) 中的 \(k\) 个点组成的集合,即 \(S = \{ x_1, x_2, ..., x_k \}\). 定义 \(S\) 的凸壳 \(conv(S)\) 为:
\[conv(S) =\{ x = \sum_{i=1}^k \lambda_i x_i \mid \sum_{i=1}^k \lambda_i = 1, \lambda_i \geq 0, i = 1, 2, ..., k \} \]
个人对凸壳的一个直觉上的理解:即处于边界的点围成的一块区域就是凸壳,如下图所示的两个凸壳 \(S_+, S_-\)。
再来看下线性可分的定义(参考自统计学习方法第二版 p.36):
给定一个数据集 \(T = \{ (x_1, y_1), (x_2, y_2), ..., (x_N, y_N) \}\)。其中 \(x_i \in \mathcal{X} = \mathbb{R}^n, y_i \in \mathcal{Y} = \{-1, +1 \}, i = 1, 2, ..., N\)。如果存在某个超平面 \(w \cdot x + b = 0\) 能够将数据集 \(T\) 的正负实例完全正确划分到超平面的两侧,则 \(T\) 是线性可分的数据集,否则 \(T\) 线性不可分。
具体证明过程可参考这里。