日期:2020.10.28
主题:学习PyTorch概念知识
一、PyTorch的历史
- Torch设计的关键特点:简化数值算法的发展;易于扩展;快速。
- 缺陷:所支持的Lua语言未被广泛接受,相比之下,Python接受度更高。
二、PyTorch是什么
它是⼀个张量计算库,可由GPU驱动。
优点:
- Python优先框架;
- 基于磁带的自动求导,动态图 (define by run);
- 轻松调试。
三、使用计算图
- 神经网络图
通过演化,发现绘制神经网络图可以将复杂性降低到最低,而计算图通过操作来描述网络中的数据流。
* 图:⼀种由⼀组节点和连接节点的边组成的数据结构。在计算图中,“节”点表示张量,“边”表示节点之间的关系。
* 图方法:将网络内的操作视为节点,并将它们映射到⼀个图,其中节点之间的关系表示从⼀个操作到另⼀个的转化。 - 大型网络直观化
计算图使⼤型网络直观化,变成⼀系列数学运算。
* 求解方程的明显方法:将方程划分为更小的单元,并将⼀个单元的输出传递给另⼀个单元,依此类推。 - 深度学习框架的基础
* 独⽴的节点,单独线程的计算:现存的深度学习框架都使⽤图⽅法来进行计算。这有助于使框架找到独⽴的节点,并将其计算作为单独的线程来运⾏。
* 反向传播:计算图有助于反向传播,并在遍历时带有梯度。
* 反向模式⾃动微分:计算图⽤于反向传播背后的核⼼思想。 - 神经网络求解数学方程
⽆论任务的复杂程度,⼀切可归结为⼀个庞⼤的数学⽅程,并将通过优化神经⽹络的参数来求解。
* “动⼿计算”:计算图通过将所有操作映射到⼀个图中、逐级并每次求解⼀个节点来解决问题。
四、使用静态图
传统的神经网络架构处理方法。
-
前向过程
-
反向过程
五、使用动态图
动态功能是命令式图构建的优势。
与静态的不同:动态框架不在数据传递前⽣成图,⽽是程序等待数据,遍历数据,并⽣成图。每次迭代数据后,⽣成⼀个新的图实例,并在反向过程完成后将其销毁。
六、探索深度学习
-
机器学习
人们编写大量的规则,用机器学习的方法来让计算机从示例中学习规则,而不必显式编写代码,从而让计算机像人一样工作。
* 数据驱动的方法:通过查看以往数据来得出答案(预测)。唯⼀要做的是抽取特征,并将其交给不同的算法组成的黑盒,由黑盒根据特征学习规则或模式。问题在于我们⽆法有效地预测高维数据的特性和其他媒体类型的数据。 -
深度学习
机器学习的⼀个子集。
使用数据驱动的方法,但由计算机决定特征的选择。 -
神经网络
-
不同的架构
⼀些是基于我们对大脑的想法,另⼀些是基于大脑的实际工作。
a) 全连接网络:全连接、密集、线性,根据权重评分调整连接;
b) 编码器和解码器:
__全连接层中的隐藏层 -> 来自编码器的编码形式,
__输出层:解码器(把隐藏层解码并作为输出),
__编码器将输⼊编码到中间状态,其中输入为向量,
__例如,seq2seq网络;
c) 循环神经网络 (RNN)
__自然语言处理(一个单词 ->一个单元,句子 ->一组单词,一次处理一个单词),
__常见RNN单元:长短期记忆 (LSTM)、门控循环单元 (GRU);
d) 递归神经网络
__一种树状网络,用于理解序列数据的分层结构,
__自然语言处理(单词释义与句子规则),
__SNLI;
e) 卷积神经网络 (CNN)
__使人类能在计算机视觉中获得超人的性能,
__有可视化工具来显示每一层在做什么,使其容易理解;
f) 生成对抗网络 (GAN)
__“警察与造假币者的斗争”;
g) 强化学习
__“深度强化学习”(深度+强化)。
以上,晚安。