构建第一个深层神经网络: 反向传播简介
一、 路灯问题
问题引入:
想象一下你正在接近一个外国的街角。当你走近时,你抬头一看,发现路灯是陌生的。你怎么知道什么时候过马路安全?
通过解读街灯,你可以知道什么时候过马路是安全的。
记录下以下模式:
停止:第一个红绿灯没人走,左灯或右灯可能与停止相关,或者中心灯可能与行走相关。
步行:人们走路,所以这盏灯的某些东西改变了信号,能确定的是,极右的光似乎并不表明这种或那种方式
停止:这次只有中间的灯变了,得到了相反的模式。假设是中间的灯指示人们什么时候觉得走路安全。
记录下以下六种光模式
正如假设的那样,中间的(交叉的)光线和步行是否安全之间有着完美的关联。
准备数据
- 有六组信号灯数据。
- 有六个关于人们是否行走的观察。
二、矩阵和矩阵关系
这里运用以数字的形式模仿街灯的模式。
此处显示的数字模式模仿了街灯中 1 和 0 的模式,每盏灯都有一列(总共三列,因为有三盏灯),有六行代表六种不同的观察到的街灯。
对信号灯开始建模:
路灯矩阵矩阵A模仿了显示存在的世界。
矩阵A模仿了显示存在的世界。
好的数据矩阵完美地模拟了外部世界。
数据矩阵不一定都是 1 和 0。如果路灯开着调光器,并以不同的强度开关,街灯矩阵可能是这样的。
路灯矩阵B:
矩阵B也是有效的,它充分捕捉了各种训练示例(行)和灯光(列)之间的关系。
意矩阵 A * 10 ==矩阵 B
路灯矩阵 C
有无限多的矩阵可以完美地反映数据集中的街灯模式。
小结:
重要的是要认识到底层模式与矩阵不同。这是矩阵的一个性质。事实上,这是这三个矩阵(A,B,C)的一个性质。模式是这些矩阵中的每一个所表达的。这种模式也存在于街灯中。这种输入数据模式是希望神经网络学习转换成输出数据模式。
可以反转 1 和 0,输出矩阵仍然会捕获数据中存在的基本停止/行走模式。知道这一点,因为无论将 1 指定为“行走”还是“停止”,仍然可以将 1 和 0 解码为基本的“停止/行走”模式。
产生的矩阵被称为无损表示,因为可以在您的停车/步行记录和矩阵之间完美地来回转换。
在 Python 中创建矩阵
创建一个二维数组(矩阵):
import numpy as np
streetlights = np.array( [ [ 1, 0, 1 ],
[ 0, 1, 1 ],
[ 0, 0, 1 ],
[ 1, 1, 1 ],
[ 0, 1, 1