1、什么是深度学习
1.1 机器学习
图片
图1:计算机有效工作的常用方法:程序员编写规则(程序),计算机遵循这些规则将输入数据转换为适当的答案。这一方法被称为符号主义人工智能,适合用来解决定义明确的逻辑问题,比如早期的PC小游戏:五子棋等,但是像图像分类、语音识别或自然语言翻译等更复杂、更模糊的任务,难以给出明确的规则。
图2:机器学习把这个过程反了过来:机器读取输入数据和相应的答案,然后找出应有的规则。机器学习系统是训练出来的,而不是明确的用程序编写出来。举个例子,如果你想为度假照片添加标签,并希望将这项任务自动化,那么你可以将许多人工打好标签的照片输人机器学习系统,系统将学会把特定照片与特定标签联系在一起的统计规则。
定义:机器学习就是在预定义的可能性空间中,利用反馈信号的指引,在输入数据中寻找有用的表示和规则。
图片
1.2 深度学习
深度学习是机器学习的一个分支领域,强调从一系列连续的表示层中学习。现代的深度学习模型通常包含数十个甚至上百个连续的表示层,它们都是从训练数据中自动学习而来。与之对应,机器学习有时也被称为浅层学习。
在深度学习中,这些分层表示是通过叫作神经网络的模型学习得到的。深度神经网络可以看作多级信息蒸馏过程:信息穿过连续的过滤器,其纯度越来越高。
技术定义:一种多层的学习数据表示的方法。
图片
1.3 深度学习工作原理
a. 对神经网络的权重(有时也被称为该层的参数)进行随机赋值
b. 经过一系列随机变换,得到预测值Y’
c. 通过损失函数(有时也被称为目标函数或代价函数),得到预测值Y’与真实值Y之间的损失值
d. 将损失值作为反馈信号,通过优化器来对权重值进行微调,以降低当前示例对应的损失值
e. 循环重复足够做的次数(b-d),得到具有最小损失值的神经网络,就是一个训练好的神经网络
图片
2、神经网络数学基础
2.1 神经网络的数据表示
目前所有机器学习系统都使用张量(tensor)作为基本数据结构,张量对这个领域非常重要,TensorFlow就是以它来命名。
张量这一概念的核心在于,它是一个数据容器。它包含的数据通常是数值数据,因此它是一个数字容器。你可能对矩阵很熟悉,它是2阶张量。张量是矩阵向任意维度的推广,张量的维度通常叫做轴。
张量是由以下3个关键属性来定义的。
轴:轴的个数
形状:表示张量沿每个轴的维度大小(元素个数)
数据类型(dtype):数据的类型,可以是float16、float32、float64、unit8、string等
2.1.1 标量(0阶张量)
仅包含一个数字的张量叫做标量(SCALAR),也叫0阶张量或0维张量。
下面是一个NumPy标量
import numpy as np
x = np.array(3)
x.ndim // 轴:0, 形状:()
2.1.2 向量(1阶张量)
数字组成的数组叫做向量(VECTOR),也叫1阶张量或1维张量。
下面是一个NumPy向量
x = np.array([4, 1, 5])
x.ndim // 轴:1, 形状:(3,)
这个向量包含3个元素,所以也叫3维向量。不要把3维向量和3维张量混为一谈,3维向量只有一个轴,沿着这个轴有3个维度。
2.1.3 矩阵(2阶张量)
向量组成的数组叫做矩阵(MATRIX),也2阶张量或2维张量。矩阵有2个轴:行和列。
下面是一个NumPy矩阵
x = np.array([
[4, 6, 7],
[7, 3, 9],
[