《Python神经网络编程》读书笔记

《Python神经网络编程》

书名:Python神经网络编程
作者:[英]塔里克·拉希德(Tariq Rashid)
译者:林赐
出版社:人民邮电出版社
出版时间:2018-04
ISBN:9787115474810

参照本书,自己可以动手写一个简单的神经网络,还不快来看看。

内容提要

神经网络是一种模拟人脑的神经网络,以期能够实现类人工智能的机器学习技术。

本书揭示神经网络背后的概念,并介绍如何通过Python实现神经网络。

全书分为3章和两个附录。

  1. 第1章介绍了神经网络中所用到的数学思想。
    • 我们将如清风拂面般,一览在简单的神经网络中所用的数学思想。我们有意不介绍任何计算机编程知识,以避免喧宾夺主地干扰了本书的核心思想。
  2. 第2章 介绍使用Python实现神经网络,识别手写数字,并测试神经网络的性能。
    • 我们将学习足以实现自己的神经网络的Python知识。我们将训练神经网络,识别手写数字,并且会测试神经网络的性能。
  3. 第3章 带领读者进一步了解简单的神经网络,观察已受训练的神经网络内部,尝试进一步改善神经网络的性能,并加深对相关知识的理解。
    • 我们将进一步了解简单的神经网络,这超出了了解基本神经网络知识的范畴,但是我们这样做只是为了获得一些乐趣。我们将尝试一些想法,进一步改善神经网络的性能,我们将观察已受训练的神经网络内部,看看我们是否理解神经网络所学习到的知识,是否理解神经网络是如何做出决定进行回答的。

附录分别介绍了所需的微积分知识和树莓派知识。

本书适合

  1. 想要从事神经网络研究和探索的读者学习参考
  2. 对人工智能、机器学习和深度学习等相关领域感兴趣
国际象棋机器Turkey
MNIST

第1章 神经网络如何工作

处理图像
对比

有些任务,对传统的计算机而言很容易,对人类而言却很难。例如,对数百万个数字进行乘法运算。

另一方面,有些任务对传统的计算机而言很难,对人类而言却很容易。例如,从一群人的照片中识别出面孔。

一台简单的预测机

机器
计算
一组加法
转化
真实情况
常数C

\[ 误差值=真实值-计算值 =62.137-50 =12.137 \]

误差值
误差值变小
超调
微调C

所有有用的计算机系统都有一个输入和一个输出,并在输入和输出之间进行某种类型的计算。神经网络也是如此。

当我们不能精确知道一些事情如何运作时,我们可以尝试使用模型来估计其运作方式,在模型中,包括了我们可以调整的参数。

如果我们不知道如何将千米转换为英里,那么我们可以使用线性函数作为模型,并使用可调节的梯度值作为参数。改进这些模型的一种好方法是,基于模型和已知真实示例之间的比较,得到模型偏移的误差值,调整参数。

分类器与预测器并无太大差别

小虫子的宽度和长度
分界线
分界线
分界线
未知小虫

训练简单的分类器

实例
可视化数据

\[ y=A x \]

斜率
误差值
ΔA)

\[ \Delta \mathrm{A}=\mathrm{L}(\mathrm{E} / x) \]

最终直线

我们使用简单的数学,理解了线性分类器输出误差值和可调节斜率参数之间的关系。也就是说,我们知道了在何种程度上调整斜率,可以消除输出误差值。

使用朴素的调整方法会出现一个问题,即改进后的模型只与最后一次训练样本最匹配,“有效地”忽略了所有以前的训练样本。解决这个问题的一种好方法是使用学习率,调节改进速率,这样单一的训练样本就不能主导整个学习过程。

来自真实世界的训练样本可能充满噪声或包含错误。适度更新有助于限制这些错误样本的影响。

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127