PyTorch 深度学习实践
01.Overview
刘二大人视频学习笔记,2023年07月03日。
本章是对课程的一些介绍和入门内容的介绍,但是刘二大人有着非常广阔的知识面,随便听都能听到新东西,做一些重要内容的记录,共勉。
(🥺我在电脑用Typora写,最终要存在优快云上,所以截图很麻烦,尽量以文字形式记录)
1.课程目标(Goal of this tutorial)
- 如何用PyTorch来实现一个学习系统
- 理解最基本的神经网络(neural networks)/深度学习(deep learning)
由此需要的课程基础:
- 线性代数 + 概率论与数理统计
- Python
2.人类智能与机器学习(Human Intelligence & Machine Learning)
(1)人类智能
今天吃什么?今天穿什么?
我们会根据信息分析得出结果。
推理:Information --> infer
预测:Image(实体) --> Prediction(抽象)
(2)机器学习
但是机器学习,会将你可能吃/穿的,以独特的方式凸显出现(比如外卖特价)。
课程所用的基本都是监督学习,他的计算过程(算法)来自于数据
机器学习概念分层:
AI,比如Knowledge bases,知识库
Machine Learning,比如Logistic Regression逻辑斯蒂回归
Representation Learning表示学习,比如Shallow Autoencoders浅层的自动编码器
Deep Learning,比如MLPs多层感知机,卷积神经网络……
3.如何开发学习系统?
- Rule-based Systems基于规则的系统
input --> Hand-designed program --> output
最早的人工智能算法就是基于Rule-based
比如
∫ f ( x ) d x \int f(x)dx ∫f(x)dx
最早的人工智能函数求解原函数就是构建知识库,这需要具有相关领域的知识:
( 1 ) ∫ e x d x = e x ( 2 ) ∫ x N d x = 1 N + 1 x N + 1 … (1) \int e^xdx = e^x \quad(2) \int x^Ndx = \frac{1}{N+1}x^{N+1}\dots (1)∫exdx=ex(2)∫xNdx=N+11xN+1…
∫ ( f ( x ) + g ( x ) ) d x = ∫ f ( x ) d x + ∫ g ( x ) … \int(f(x)+g(x))dx = \int f(x)dx + \int g(x) \dots ∫(f(x)+g(x))dx=∫f(x)dx+∫g(x)…
还有三角变换等规则,利用这些规则进行计算。
但是这样方式会导致规则越来越多,越来越难维护,这种系统并不是一种学习系统,但是确实是早期人工智能方法。
- Classic Machine Learning经典机器学习
input --> Hand-designed features(手工特征提取) --> Mapping from features(建立映射) --> output
- Representation Learning表示学习
input --> Features --> Mapping from features–> output
维度诅咒
维度越多,对数据的需求就越大。
Features的数量越多,根据大数定律,与真实的数据约接近。但如果在一维采样10个点满足了大数定律,在二维采样就需要100个点,三维就需要有1000个……
实际情况下,需要对维度进行降低,需要进行线性映射(线性代数,矩阵乘法)或者非线性映射
这种高维降低到低维的过程就称为Present(表示)。
这里有一个分支Manifold(流形),可以说“这是在高维空间的一个低维流形“。
什么是流形?
比如银河系,在三维宇宙里,是一个倾斜的趋于光滑的平面。这样可以把某一星球坐标放在平面形成坐标,[x,y,z]->[u,v]。
Deep Learning深度学习
input --> Simple Features(原始特征:比如语音的波形,图片像素的张量,二维表格的数据) --> Additional Layers of More Abstract Features --> Mapping from features–> output
其中,表示学习的Feature和学习器分开训练,但是深度学习是统一的,所以深度学习叫做End to End(端到端的学习)
2010 年之前表示学习一般使用的是SVM Family,后面改为深度学习的端到端的学习。
4.传统的机器学习策略
此处为scikit-learn algorithm cheat-sheet给出的策略图。
5. 挑战(SVM受到的挑战)
- Limit of hand-designed feature
- SVM can not handle big data set well
- More and more application need to handle unstructured data
IMGENET的ILSVRC竞赛数据,可见深度学习从ILSVRC11 - ILSVRC12错误率有很大改进,最后在ILSVRC15上错误率为3.57%超过了人类工作的错误率5%。
6.神经网络的历史——从神经科学到数学和工程学
- 1959年对哺乳动物的研究,可以发现视觉神经在处理信息的时候是分层的,浅层神经元检测简单的特征,比如线条的移动或颜色块,高级神经元再去检测具体的特征。
- 类似神经元树突和突触建立了仿生学的算法,建立的感知机。根据神经元的来接,建立了人工神经网络。
- 其中最重要的算法——Back Propagation反向传播。反向传播的核心就是计算图。
- 最早的深度学习模型是1998年LeNet-5,然后有AlexNet(2012年)GoogLeNet&VGG(2014年) ResNet(2015年)
7.好消息(?)
- 深度学习不是too difficult
- 有很多深度学习模型
- 比较流行的深度学习模型:Theano/TensorFLow,Caffe/Caffe2.Torch/PyTorch
TF Static Graph
Pytorch Dynamic Graph
8.安装
不多说了!我也不知道具体安什么,后面课程看缺什么安什么。