【深度学习入门 2022 最新版】 深度学习简介
【深度学习入门 2022 最新版】第一课 深度学习简介
- 概述
- 深度学习 vs 机器学习
- 机器学习是什么
- 深度学习是什么
- 机器学习和深度学习的区别
- 神经网络
- 机器学习实现二分类
- 神经网络实现二分类
- TensorFlow
- PyTorch
- 神经网络的原理
- 张量
- 张量最小值 (补充)
- 张量最大值 (补充)
- 前向传播
- 损失计算
- 反向传播
- 梯度下降
- 案例
- 线性回归公式
- 梯度下降
- 完整代码
概述
该专栏为 2022 版深度学习入门教程. 学习此教程需要具备一定的 Python 基础知识和对机器学习的一些基础了解.
深度学习 vs 机器学习
机器学习是什么
机器学习 (Machine Learning) 能使机器自动从数据和过去的经验中学习. 通过模型在最少的人工干预下进行预测.
深度学习是什么
深度学习 (Deep Learning) 是机器学习的一种, 深度学习通过神经网络 (Neural Network), 对数据特征进行提取来实现数据的预测.
机器学习和深度学习的区别
举个例子, 我们需要对苹果和橘子进行分类.
机器学习的做法我们需要给模型提供量化的特征, 比如: 物体的重量, 物体的大小等. 但深度学习会通过神经网络 (Neural Network) 来自行提取特征. 因此, 深度学习所需要的算力要远远高于机器学习.
神经网络
神经网络 (Neural Network) 通过模拟人脑的运作方式来识别一组数据中的潜在关系. 如上面例子提到, 深度学习通过神经网络会自行提取多个特征, 类似我们发现苹果和橘子在大小, 重量上的区别, 组建一个由多个权重构成的网络. 神经网络可以适应不断变化的输入, 调整权重来获得最佳的结果.
神经网络的组成部分:
- 输入层 (Input Layer): 输入层将初始数据代入神经网络, 供后续层神经元 (节点) 进行进一步处理. 比如, 图片识别中图片的像素, NLP 中的词向量
- 隐藏层 (Hidden Layer): 隐藏层帮助我们实现了特征提取, 隐藏层中的每一个节点对输入层对应不同的权重
- 输出层 (Output Layer): 输出层负责输出最后的结果
神经网络的每一层都有对应的神经网络与下一层连接.
机器学习实现二分类
机器学习实现橘子苹果分类 (数据是我编的, 表示重量和大小):
输出结果:
神经网络实现二分类
TensorFlow
神经网络实现橘子苹果分类:
结果:
PyTorch
代码:
输出结果:
神经网络的原理
神经网络的工作流程:
- 参数随机初始化
- 前向传播
- 损失计算
- 反向传播
- 梯度下降
- 重复 2-5 步, 直到指定迭代次数
张量
张量 (Tensor) 是深度学习经常提到的一个词, 张量实际上代表的就是一个多维数组. 张量的目的是能够妆造更高维度的矩阵 & 向量.
1 维张量 = 1 维数组
2 维张量 = 2 维数组
3 维张量 = 3 维数组
张量最小值 (补充)
reduce_min
函数可以帮助我们计算一个张量各个维度上元素的最小值. (补充, 了解即可, 后面会具体详解)
格式:
参数:
- input_tensor: 传入的张量
- axis: 维度, 默认计算所有维度
- keepdims: 如果为真保留维度, 默认为 False
- name: 数据名称
张量最大值 (补充)
reduce_max
函数可以帮助我们计算一个张量各个维度上元素的最大值. (补充, 了解即可, 后面会具体详解)
格式:
参数:
- input_tensor: 传入的张量
- axis: 维度, 默认计算所有维度
- keepdims: 如果为真保留维度, 默认为 False
- name: 数据名称
前向传播
前向传播 (Forward Propagation) 是将上一层输出作为下一层的输入. 并计算下一层的输出, 一直运算到输出层为止.
如图:
mnist 训练代码片段 (前向传播):
损失计算
损失函数 (Loss Function), 又称为代价函数, 用于计算模型输出值和真实值之间的差距. 通过减小损失, 我们可以让模型的输入与真实值更接近.
损失函有很多种, 在后续的章节中会详细说明, 在本节中就讲一个最简单的损失函数 MSE. 平方差 (Mean Square Error, MSE), 即计算两个值之间平方的差.
公式如下:
反向传播
反向传播 (Back Propagation) 会计算损失函数的梯度, 反馈给模型. 然后模型进行梯度下降, 更新权重, 从而最小化损失.
梯度下降
梯度下降 (Gradient Descent) 用于迭代模型的权重, 用于找到模型损失的最小值.
案例
下面我们通过一个线性回归 (Linear Regression) 来详解一下以上的神经网络工作流程.
线性回归公式
- w: weight, 权重系数
- b: bias, 偏置顶
- x: 特征值
- y: 预测值
梯度下降
- w: weight, 权重参数
- w’: 更新后的 weight
- lr : learning rate, 学习率
- dloss/dw: 损失函数对 w 求导
- w: weight, 权重参数
- w’: 更新后的 weight
- lr : learning rate, 学习率
- dloss/dw: 损失函数对 b 求导
完整代码
代码:
输出结果: