知乎盐选,邵天兰的分享,介绍了深度学习中常见的名词术语,可以快速的了解深度学习内的大体内容。
文章目录
1 从分类器开始
- 机器学习的思路
人共设计特征,提取特征 ===> ML Algorithm(分类器) ===> 分类结果输出 - 深度学习思路
神经网络提取特征 ===> 神经网络进行分类 ===> 分类结果输出
2 神经网络的基本组成单元:神经元,层
neuron
input × weight + bias --> sum --> activate function(eg: sigmoid) --> output
- input/output
- neuron
- weighted sum
- weights
- bias
activation function
通过 activation function将神经元引入非线性,常见activation function
- sigmoid
- tanh
- ReLU
layer
- Full Connected layer(FC)
FC层的每一个neuron的input都是上一层所有neuron的output - input layer
- hidden layer
- output layer
3 深度学习扛把子:卷及神经网络CNN
CNN layer(卷积层)
每一个网络层都是有深度的,是三维立体的。每一层的卷积kernel个数就是每一层的网络深度,每一个kernel可以认为是一个特征提取器,卷积的过程其实也就是一个filter的功能。如果有100个kernel,可以认为这一层卷积层就提取了100个features传递给下一层。
神经网络的参数主要在这一层,包括kernel size,Receptive Field, Stride(步幅),padding
Pooling layer(池化层,降采样层)
池化层看做采样,会降低网络层的长度和宽度,一般是减半。这一层的作用是产生了一定的“不变性”,可以认为是一种很那个选取最有用信息的操作。
常见的有
- Max Pooling
- Average Pooling
softmax
经典网络 VGG
Batch normalization
直觉来看,如果每层神经元的输入在训练过程中分布保持一致,会更容易收敛。强行让上一层的输入在一组数据中符合一定要求(均值0,方差1)。也称为Regularizer。
更深层的网络 ResNet
更深层的网络 GoogLeNet
4 真正让深度学习工作起来
优势:完成复杂学习任务
困难:参数多,数据少,容易过拟合,训练效率低
对策:海量数据,增加算力,加入缓解过拟合方法,加快训练方法
防止过拟合的方法
- 正则化
- dropout
训练时让一些神经网络输出为0 - noise
训练时让神经元输出加上一些noise - early stopping
5 神经网络训练
前向传播 --> 和ground true比较计算损失函数 --> 反向传播调整每一层的参数
问题:
- 梯度消失 gradient vanishing
- 梯度爆炸 gradient explod
更新参数的基本原理
- 梯度下降 gradient descent
学习率learning rate
重用预先训练的特征 Fine-tuning
在大数据集上训练非常浪费时间,但是小数据集训练效果又不好。由于针对不同的任务,图像特征很多是相通的,可以重用在大数据集上训练得到的特征。
应用场景:yolo模型里面不包含铁轨和罐车,但是现在却需要识别,可以使用yolo已经预训练好的模型,保持卷积层不变(冻结层参数 Freeze Layers),重新初始化全连接层,再训练。
6 前沿方向
-
从分类到目标检测Object Detection
RCNN,Fast RCNN, Faster RCNN, SSD,YOLO -
语义分割Semantic Segmentation和实例分割Instance Segmentation
FCN,Mask FRCNN -
模型小型化
SqueezeNet,ShuffleNet