Python深度学习--学习笔记
经历了一个月,终于把这本书看完第一遍了。留下一份笔记,然后后面要关注的点会标记出来。
深度学习
神经网络数学基础
神经网络的核心组件
神经网络核心组件——层——数学处理模块
张量
1.轴的个数(阶)
2.形状
3.数据类型
————> 向量;序列;图像;视频
梯度
梯度:张量的导数
随机梯度下降(SGD)
反向传播(链式求导) 优化器
神经网络入门
电影评论分类——二分类问题
IMDB数据集
1.准备数据(转为tensor)
a.填充列表 b.one-hot编码
2.构建网络(网络层数;每层隐藏单元数;激活函数)
a. 2个中间层;一层16个单元(relu)
b.第三层输出;1个单元(sigmoid)
3.验证(损失函数)
loss为binary_crossentropy
----------------------------可以查阅了解“激活函数”;尤其是sigmoid,tanh,ReLU及其变体
新闻分类——多分类问题
涉及到(单标签 or 多标签---->多分类问题)
路透社数据集
1.准备数据
One-hot编码
2.网络
2个中间层;64个单元;ReLU激活
最后一层;46个单元;Softmax激活
3.验证
loss为categorial_crossentropy
预测房价——回归问题
波士顿房价数据集
1.准备数据
对每个特征做标准化,(x-mean) / std
2.网络
2个中间层;64个单元;ReLU激活
最后一层;1个单元;不激活,标量回归
3.验证
当验证集小 时,可以考虑“K折验证”
loss为MSE
机器学习基础
1.监督学习——二分类;多分类;标量回归
序列生成;语法树预测;目标检测;图像分割
2.无监督学习——降维;聚类
3.自监督学习——启发式算法
4.强化学习
训练集;测试集;验证集
数据预处理:1、向量化;2、值标准化;3、处理缺失值
特征工程
过拟合&欠拟合:正则化(dropout;L2) 优化&泛化
指标:
1、平衡类别。ROC AUC
2、不平衡类别。 Precision Recall
3、排序、多标签分类。 mAP
深度学习用于计算机视觉
卷积神经网络
1.边界效应与填充
2.卷积步幅
下采样<-------最大池化运算
1D卷积;2D卷积;3D卷积(具体对应的应用场景在后面介绍----关键网络架构)
小型数据集上训练卷积神经网络
1.数据增强
2.Dropout正则化
3.预训练网络:Xception;VGG19;ResNet50(残差网络)
4.“冻结”卷积基-------->微调模型
----------------------------残差网络:最新有ResNest等。也可以了解Transformer,CvT等(最近在了解这些)
深度学习用于文本和序列
处理文本数据
向量化:1.one-hot编码;2…标记嵌入
循环神经网络RNNs
可以先看一个简单的RNN(这里就不做介绍了)
关注于LSTM、GRU(有兴趣可以了解了解Transformer,再去了解Informer)
1.梯度消失/爆炸
循环Dropout;堆叠循环层;双向循环层
2.温度预测
3.时序----->循环网络 + dropout / 堆叠RNN / 双向RNN
PS: 循环注意 & 序列掩码
高效的深度学习最佳实践(没有讲解)
这个部分没有细看,涉及API等,后面再补充吧
生成式深度学习
1.采样策略:
a.贪婪采样(始终选择可能性最大的字符)
b.随机采样
2.从模型的softmax输出中进行概率采样---->softmax温度(高温度<---->高随机)
e.g 字符级的LSTM文本生成
DeepDream
e.g Keras实现DeepDream
过程:反向运行一个卷积神经网络,基于网络学到的表示来生成输入
神经风格迁移
(我复现没成功呢,有空再看看)
实际应用中大多依赖于VAE;GAN在学术研究领域流行
VAE 变分自编码器
variational autoencoder
可以学习具有良好结构的潜在空间
输入x---->encoder---->压缩表示---->decoder---->输出x’
损失loss:1.重构损失;2.正则化损失
VAE得到:高度结构化的、连续的潜在表示
GAN
1.生成器 generator
2.判别器 discriminator 或对手 adversary
e.g 深度卷积生成式对抗网络 DCGAN
流程就不细说了,讲一下怎么运行的:
生成器的权重调整<----- GAN的损失
判别器更新<----- 带有“真/假”的样本训练
tricks:
1、tanh作为生成器最后一层的激活(而不是sigmoid)
2、正态分布(高斯分布)对潜在空间中的点进行采样(而不是均匀分布)
3、加入随机性---->提高稳定性:a.判别器中使用dropout b.向判别器的标签添加随机噪声
4、改善稀疏性:a.步进卷积代替最大池化;b.LeakyReLU代替ReLU
5、使用步进的 Conv2DTranpose 或 Conv2D 时,内核大小能被步幅大小整除
=========================================================================================
总结Conclusion
关键网络架构
1.密集连接网络Dense;2.卷积网络CNNs;3.循环网络RNNs
输入与网络架构的关系:
输入数据 | 网络架构 |
---|---|
向量数据 | Dense |
图像数据 | 2D卷积 |
声音数据 | 1D卷积(首选);RNNs |
文本数据 | 1D卷积(首选);RNNs |
时间序列数据 | RNNs(首选);1D卷积 |
序列数据 | RNNs(时序性强---->首选) or 1D卷积 |
视频数据 | 3D卷积(捕捉运动效果);2D卷积(帧级---->特征提取)+ RNNs or 1D卷积(处理序列) |
立体数据 | 3D卷积 |
Dense:映射任意两个输入特征之间的关系
任务 | 最后一层 | 损失函数 | 目标 |
---|---|---|---|
二分类 | Dense/sigmoid | binary_crossentropy | 0/1 |
单标签多分类 | Dense/sigmoid | categorical_crossentropy or sparse_cateforical_crossentropy | one-hot |
多标签多分类 | Dense/sigmoid | binary_crossentropy | k-hot编码 |
(连续变量)回归 | Dense/不激活 | MSE or MAE | – |
卷积神经网络
平移不变性
深度可分离卷积
SeparableConv2D;速度快,表示效率更高
=========================================================================================
第一遍看完就写到这儿了,后面会开始看大话数据结构,算法4、Deep Learning。总之有好多书需要看,最近也在双线进行图像小样本学习和视频小样本动作识别相关工作;以后再回顾的时候再补充吧,见谅。