2.1 初始神经网络
2.2 神经网络的数据表示
所有机器学习系统都使用张量作为基本数据结构,是数字的容器。
2.2.1 标量(0D张量)
仅包含一个数字的张量叫作标量。
2.2.2 向量(1D张量)
数字组成的数组叫作向量
2.2.3 矩阵(2D张量)
向量组成的数组叫作矩阵。
2.2.4 3D张量与更高维张量
将多个矩阵组合成一个新的数组叫作3D张量。
2.2.5 关键属性
张量的三个关键属性:
- 轴的个数(阶):3D张量有3个轴
- 形状:这是一个整数元组,表示张量沿每个轴的维度大小(元素个数)。
- 数据类型:张量中所包含数据的类型,张量的类型可以是float32、uint8、float64。
2.2.6 在Numpy中操作张量
选择沿着第一个轴的特定数字,选择张量的特定元素叫作张量切片。
2.2.7 数据批量的概念
深度学习中所有数据张量的第一个轴都是样本轴。
可以将数据拆分为小批量的张量,第一个轴叫作批量轴或批量维度
2.2.8 现实世界中的数据张量
- 向量数据:2D张量
- 时间序列数据或序列数据:3D张量
- 图像:4D张量
- 视频:5D张量
2.2.9 向量数据
例如:人口统计数据集
2.2.10 时间序列数据或序列数据
例如:股票价格数据集
2.2.11 图像数据
图像通常具有三个维度:高度、宽度和颜色深度。
例如128张彩色图像张量的形状(128,256,256,3)
2.2.12 视频数据
视频可以看作一系列帧,每一帧都是一张彩色图像 。图像是3D张量,视频就是4D张量,不同视频组成的批量就是5D张量。
2.3 神经网络的“齿轮”:张量运算
2.3.1 逐元素运算
2.3.2 广播
2.3.3 张量点积
点击运算,也叫张量积,是最常见也最有用的张量运算。
例如:
(a,b,c,d). (d,) -> (a, b , c)
(a, b, c, d) . (d, e) -> (a, b, c, e)
2.3.4 张量变形
一种特殊的张量变形是转置。对矩阵做转置是指将行和列互换。
2.3.5 张量运算的几何解释
张量运算都有几何解释。
2.3.6 深度学习的几何解释
可以将神经网络解释为高纬空间中非常复杂的几何变换。
深度学习:将复杂的几何变换逐步分解为一长串基本的几何变换。
2.4 神经网络的“引擎”:基于梯度的优化
利用网络中所有运算都是可微的,计算损失相对于网络系统的梯度,然后向梯度的反方向改变系统,从而使损失降低。
2.4.1 什么是“导数”
可微的意思是可以被求导。
对于每个可微函数f(x),都存在一个导数函数f’(x),将x的值映射为f在该点的局部线性近似的斜率。
2.4.2 张量运算的导数:梯度
梯度是张量运算的导数。是导数这一概念向多元函数导数的推广。多元函数是以张量作为输入的函数。
2.4.3 随机梯度下降
2.4.4 链式求导:反向传播算法
将链式法则应用于神经网络梯度值的计算,得到的算法叫作反向传播(反式微分)。
TensorFlow:给定一个运算链,并且已知每个运算的导数,这些框架就可以利用链式法则来计算这个运算链的梯度函数,将网络参数值映射为梯度值。
2.5 回顾第一个例子
本章小结
- sequential 顺序的
- activation 激活
- dense 密集的
- optimizer 优化器