0724 深度学习基础
深度学习基础——王文中
- 假设空间:
算法根据训练数据在假设空间(有许多函数假设)中找到最好的假设,能够近似的表达最能符合训练数据的假设。
- 线性分类器:
传统:直接将特征用于数据分类
神经网络:将特征先进行Logistic Regression非线性变换,训练出新的特征后,再将新的特征用于线性变换
深度学习:对原始数据(原始输入特征)做多层次非线性变换,得到新的特征。
判断是否为前馈神经网络:看网络中是否有回路
- 深度学习模型:
决策树模型不是深度学习模型:虽然有好几层决策,但不会学习到新的特征,因此不是深度学习模型
SVM模型:不是深度学习模型,SVM是线性模型
- 单隐层神经网络:
可以逼近任意线性函数,拟合任意决策边界,也可以表示任意布尔函数
困难:可能需要巨大数目的神经元才能达到足够的逼近精度
- 深层模型:
从输入到输出经历至少2层非线性变换
非线性变换的参数是从数据中学习出来的
每一层线性变换把前一层的输出变换到另一空间(特征变换)
多层非线性变换复合构成输入到输出的变换关系(kernel SVM:多个非线性变换组合)
- 本课程假定:
假设空间中只包含某一种结构确定的网络;
不同的假设h(神经网络)完全由网络的参数θ决定;
搜索h即为搜索θ
- 权值初始化:
用随机值初始化权值W,用0初始化偏置b
- 损失函数的性质:
大规模神经网络的局部极小点是等价的,对应的网络在测试集上的性能相当
收敛于一个不好的局部最小点(损失函数的值较大)的概率会随着网络规模的增大迅速降低。
在实际使用中,搜索全局最小点可能是没有实际用处的,这有可能导致过拟合
损失函数是由训练样本D决定的
- 正则化:
减轻过拟合风险
- Dropout:
每一个神经元被随机的去掉,也就是说每一次训练时神经元都是不同的
- 集成学习的方法:
Bagging:防止过拟合,将多个模型学习到的内容集成起来
Boosting:加上一个bias(偏好)
Batch Normalization:
归一化操作
- Early stopping:
用一个验证集来检测训练的效果,防止过拟合
- One-hot vector(热独向量):
全局(x∈k)为1,否则为0
深度学习框架介绍——郑歆慰(中科类脑)
- 深度学习框架:
深度学习需要大量计算
数据量和节点数是主要的计算需求来源
神经网络的结构适用于GPU进行高效并行计算
深度学习框架的创建目标是在GPU上高效的运行深度学习系统
提供基础的数据结构
利用计算图实现自动求导和性能优化
- Torch:
从lua语言开始,lua是一种脚本语言,由c语言编写,主要用来游戏引擎的开发
- Tensor:
张量是向量、矩阵在更高维度上的一种推广
- Python:
Python中一切都是对象,但在最初已经默认建立好了一些整数
a=300,b=300,a is b (F 300为新建的对象)
a=200,b=200,a is b (T 200是池子中可以直接指向的整数,不需要重新定义)
- numpy和torch的互相转化:
若torch的数组来源于numpy,则推荐使用torch.from_numpy()来初始化
除CharTensor外所有在CPU上的张量都支持和numpy的array之间的互相转换
- Data pointer:
Torch tensor拷贝了numpy array的数据指针,而不是内容
Tensor并不保存数据,而是通过storage保存的是指向raw data的指针、大小、allocator等信息
Storage并不负责解析数据,数据怎么解读由tensor来完成
View函数可以定义多个tensor而共享相同的storage
当tensor需要在不同设备(CPU、GPU)之间迁移时,可以使用.to()方法
Z=x+y z.to(“GPU”,torch.double)
- 机器学习的几个主要流程:
设计神经网络结构
准备训练数据,并且计算loss
计算梯度,更新模型参数