深度学习导读
本文记录深度学习入门笔记。
一些深度学习的资源:
- 邱锡鹏老师的 神经网络与深度学习:官网、教材 PDF。
- OpenAI 初创成员 Andrej Karpathy 的教学视频 Neural Networks: Zero to Hero,以语言模型为主:中文翻译视频、源视频、代码。
- 深度学习 Python 框架 PyTorch:开源仓库、英文文档、中文文档(非官方)。
- 神经网络可视化工具:Netron。
- 实验指标记录与可视化工具:SwanLab(大陆推荐)、Wandb 等。
- 数据科学竞赛网站:Kaggle。
- 云 GPU 租户:OpenBayes、AutoDL、恒源云 等。
上述资源的使用顺序推荐:
- 快速浏览 神经网络与深度学习,理解基本的神经网络原理;
- 使用 PyTorch 实现一些基本的网络,并能在经典数据集上完成端到端的训练与验证;
- 使用 Netron 可视化网络结构,使用 SwanLab 或 Wandb 记录实验指标;
- 观看 Neural Networks: Zero to Hero 初步入门语言模型;
- 参与 Kaggle 竞赛,以赛促学。
- 如果计算资源有限,推荐租云 GPU 加速上述过程。
深度学习是什么?相较于机器学习中「手动提取特征」从而进行之后的下游任务,深度学习则直接规避了手动提取特征的人工干预,直接让模型自动提取数据特征并进行之后的下游任务,从而实现所谓「端到端」的任务范式。这里的自动提取特征也被叫做「表示学习」,具体流程如下图所示:
为什么会有深度学习?最简单的一点就是,很多特征我们根本没法定义一种表示规则来提取,比如说对于图像,怎么定义复杂的图像的特征呢?比如说对于音频,又怎么定义复杂的音频的特征呢?没办法,我们直接学特征!
神经网络是什么?就是万千模型中的一种,给定输入,得到输出,仅此而已。
为什么用神经网络进行深度学习?有了上面对深度学习定义的理解,可以发现其中最具有挑战性的特点就是,模型怎么知道什么才是好特征?什么是不好的特征?神经网络可以很好的解决这个问题。通过由浅到深的层层神经元的特征提取,深层的神经元就可以学习到更高语义的特征,并且由于不同层级的神经元可以提取到不同层级的语义特征,也可以很好地解释深度学习中特征的「贡献度分配」问题。
