《neural network and deep learning》题解——ch01 神经网络
本专栏聚焦于前沿技术趋势,包括大型模型(如GPT和DALL-E)的开发与应用,以及相关技术的详细解析。内容深入探讨了感知器网络的行为特性,包括缩放权重和偏置对网络行为的影响,以及S型神经元在不同条件下的行为表现。此外,还讨论了如何通过增加输出层实现按位表示的手写数字分类任务,并验证了梯度下降算法的几何解释及其在在线学习中的应用。最后,通过具体实现,展示了仅含输入层和输出层的网络在分类任务中的识别率表现。
重磅专栏推荐:
《大模型人工智能生成内容系统》
《系统课程学习规划》
《知识星球平台》
该专栏致力于深入探讨当今最前沿的技术趋势与应用领域,涵盖包括ChatGPT和Stable Diffusion等在内的相关技术。我们将系统性地研究大型模型的开发、应用及其相关的人工智能生成内容(AIGC)技术。通过深入的技术分析和实践经验交流,旨在帮助读者更深入地理解并有效应用这些领域的最新进展。
在线阅读:http://neuralnetworksanddeeplearning.com/
1.2 S 型神经元
问题 1
令我们考虑将一个感知器网络中的所有权重和偏置按比例因子c > 0进行缩放。证明该网络的行为保持不变。
证:
\large \color{blue}{\sigma (cw,cb) = \frac{1}{1+e^{-\sum_jcw_jx_j-cb}} = \frac{1}{1+e^{-cz}}}
当c>0时,假设z为极大正数,则e^{-cz} \approx 0,从而\sigma(z) \approx 1;反之,若z为负数,则e^{-cz}趋向于正无穷,此时\sigma(z) \approx 0。由此可见,网络行为未发生改变。
问题 2
假设我们采用与上题相同的设置,即一个感知器网络。所有输入均被选中。为了简化分析,我们不考虑实际的输入值,而是将输入固定为常数。对于网络中任意特定感知器的输入 x,其权重向量 w 和偏置 b 满足 w · x + b ≠ 0。接下来,我们将 S 型神经元替换网络中的所有感知器,并将所有权重和偏置乘以一个正的常量 c(c > 0)。证明当 c 趋向于无穷大时,S 型神经元网络的行为与感知器网络在极限情况下完全一致。进一步分析,当存在感知器满足 w · x + b = 0 时,其行为与 S 型神经元有何不同?
当w \cdot x + b = 0时,z的值为0,从而\sigma(z)的值等于\sigma(0),即\frac{1}{1 + 1} = 0.5。\sigma(z)始终等于0.5,这表明网络行为呈现出显著差异。当w \cdot x + b \neq 0时,c趋近于正无穷大,因此c > 0。基于此分析,与题1的结论一致,网络行为未发生改变。
1.4 一个简单的分类手写数字的网络
问题 1
通过在上述三层神经网络结构中增加一层额外的神经网络层,可以实现对数字的按位表示。这层额外的神经网络层将原来的输出层转换为二进制表示,具体如图所示。为了使新的输出层能够产生准确的输出结果,我们需要对其进行权重和偏置的优化。假设原先的三层神经网络在第三层能够输出正确的结果(即原来的输出层),其激活值在正确输出时至少为0.99,在错误输出时的激活值则不超过0.01。
上述的三层神经网络如下:

按位表示数字的神经网络如下:

首先,我们设想0~9用四位二进制如何表示:
| 十进制 | 二进制 |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
一种简明且合理的权重设定方式是,我们采用二进制位上的数值作为权重。假设目标输出为0,则该层的输入为:
(可以竖向查看每一位的值)
第一个神经元的计算结果为:
0.99 \times 0 + 0.01 \times 0 + \dots + 0.01 \times 1 + 0.01 \times 1 = 0.02
同理,第二个神经元的计算结果为:
0.04
第三个神经元的计算结果为:
0.04
第四个神经元的计算结果为:
0.05
因此,我们可以将偏置设为 -0.06。
1.5 使用梯度下降算法进行学习
问题 1
证明上一段落的推断。提示:可以利用柯西-施瓦茨不等式。
上一段落为:
事实上,普遍认为梯度下降法是求解最小值的最优策略。为了最小化目标函数C,我们考虑通过调整∆v来实现这一目标。这相当于最小化 ∆C ≈ ∇C · ∆v。为了确保优化过程的稳定性,我们设定步长为一个较小的固定值ε,其中ε > 0。在固定步长的条件下,我们的目标是找到一个下降方向,使得目标函数C的值能够最大程度地减小。通过数学推导,可以证明,当选择∆v = −η∇C时,内积∇C · ∆v达到最小值。其中,η = ε/∥∇C∥,这一结果是基于步长限制∥∆v∥ = ε得出的。综上所述,梯度下降法是一种通过在最陡下降方向上进行微小调整来逐步优化目标函数的方法。
柯西-施瓦茨不等式:
\large \color{blue}{|a||b| >= |ab|}
因为 ||∆v|| = ε,由 柯西-施瓦茨不等式得:
\large \color{blue}{∇C · ∆v <= ||∇C ||·|| ∆v|| = ε||∇C|| }
所以想让∇C · ∆v 得到最大值,即等于ε||∇C|| ,则:
\large \color{blue}{∆v = \frac{ε∇C}{||∇C||}}
同理,想得到∇C · ∆v 得到最小值,则:
\large \color{blue}{∆v = -\frac{ε∇C}{||∇C||} = −η∇C}
问题 2
我已阐述了当C为二元或多元函数时的情况。那么,如果C是一个一元函数呢?你能否提供梯度下降法在一元函数的几何解释?
如果 C 是一个一元函数,我们可以将其几何化为以C为y轴、v为x轴的曲线,进而寻找该曲线的最低点位置。
问题 3
梯度下降算法的极端情况是将小批量数据的大小设定为1。具体而言,假设有一个训练输入x,我们按照规则w_k \rightarrow w_k' = w_k - \eta \frac{\partial C_x}{\partial w_k}和b_l \rightarrow b_l' = b_l - \eta \frac{\partial C_x}{\partial b_l}来更新权重和偏置。接着选取另一个训练输入,再次进行权重和偏置的更新。这一过程被称作在线学习(online learning)。在线学习的特点是每次仅处理一个训练样本(类似于人类的学习方式)。与随机梯度下降(batch size为20)相比,递增学习的一个优点是能够快速捕捉到数据变化,缺点是更新过程可能不够稳定,容易受到单个样本的影响。
优点:单个时间点仅处理一个训练输入,使模型能够快速获取并吸收当前时刻的数据信息。例如,基于用户的浏览商品信息,系统会实时进行商品推荐;通过分析行用卡的使用行为数据,系统能够实时分析并预测欺诈行为。
与随机梯度下降法相比,online学习法在小批量输入大小为20的随机梯度下降法中,其实际的学习率过高。偶然出现的突发性噪声数据会对模型的性能造成显著影响。
1.6 实现我们的网络来分类数字
问题 1
以分量形式写出方程 (22),并验证它和计算 S 型神经元输出的规则 (4) 结果相同。
方程 (22):
\large \color{blue}{a ′ = σ(wa + b)}
方程 (4):
\large \color{blue}{\frac{1}{1+exp(-\sum_jw_jx_j-b)}}
\large \color{blue}{a ′ = σ(wa + b) = \frac{1}{1+e^{-wa-b}}=\frac{1}{1+exp(-\sum_jw_ja_j-b)}= 方程(4)}
问题 2
尝试构建一个简单的神经网络模型,该模型仅包含两层:输入层和输出层。输入层具有784个神经元,对应于MNIST数据集中的28x28像素图像;输出层则包含10个神经元,分别对应数字0到9。采用随机梯度下降算法进行训练,该网络能达到的识别率是多少?
import mnist_loader
import network
training_data,validation_data,test_data = mnist_loader.load_data_wrapper()
net = network.Network([784,10])
net.SGD(training_data,30,10,3.0,test_data=test_data)
Epoch 22: 7553 / 10000
Epoch 23: 7581 / 10000
Epoch 24: 7581 / 10000
Epoch 25: 7569 / 10000
Epoch 26: 7579 / 10000
Epoch 27: 7600 / 10000
Epoch 28: 7587 / 10000
Epoch 29: 7586 / 10000
由于图片无法正常转存,可能由于防盗链机制导致。建议将图片保存后重新上传至目标平台进行处理。
