AI学习笔记-深度学习
Day 1
概念入门
神经网络(NN, Neural Network)
深度学习通常用于指代训练神经网络的过程。
在机器学习中,我们可能用一条直线来对数据进行线性拟合;鉴于数据不可能是负数,将这条直线小于$0$的部分改为等于$0$,那么就得到了一个从$0$开始,在某个点后变为一条直线的函数,这个函数称为ReLU(Rectified Linear Unit)激活函数,其中Rectify意为“修正”,可以理解成$max(0,x)$
在神经网络中,我们将这样一个过程作为一个单位,称为神经元,也就是输入通过一个节点转化为输出。
单神经元网络就是由许多这样的神经元堆叠而成的网络
神经网络的工作就是在给定输入$x$之后,计算输出$y$,在监督学习的环境下非常有用
对于图像应用,通常在神经网络上使用卷积,称为卷积神经网络(CNN, Convolutional Neural Network)
对于序列数据,例如音频、语言等,一维的数据,通常使用递归来处理,称为递归神经网络(RNN, Recurrent Neural Network)
在神经网络的计算中,通常分为前向暂停(forward pause)和后向暂停(backward pause)两个步骤,也称为前向传播(foward propagation)和后向传播(backward propagation),这两个步骤相对独立
二分类(Binary Classification)
二分类问题是一类将输入分为$0$和$1$作为输出的问题,例如,识别一张图片中是否由猫,输出就是有($1$)和没有($0$)两种
对于这个问题,假设输入是一张$64\times64$的图片,我们可以将图片按照像素和RGB通道组成一个$64\times64\times3\eq12280$维度的向量作为输入$x$,于是我们的目标就是训练一个神经网路,对于这样一个输入$x$,预测输出$y$
常用符号约定
$x$ 输入数据
$n_{x}$ 输入数据的维度,也就是有几个特征
$y$ 输出结果
$(x^{i},y^{i})$ 第$i$组数据,可能是训练数据或测试数据,一般默认为训练数据
$m$或$m_{train}$ 训练集样本数目
$X=[x^{1},x^{2},…,x^{m}]$ 所有训练集数据的输入,是一个$n_{x}\times m$的矩阵,其中每一列是一个输入
$Y=[y^{1},y^{2},…,y^{m}]$ 所有训练集数据的输出,是一个$1\times m$的矩阵,其中每一列是一个输出
$m_{test}$ 测试集样本数目
$d_{var}$ 最终结果对$var$这个变量求导
逻辑回归和梯度下降
见机器学习笔记
计算图(Computation Graph)
一种更直观的求解导数的方式,并且某种程度上和神经网路的计算方式比较接近
以自下而上的方式将函数的式子的每一步运算过程作为一个节点,组织成一张DAG,就是计算图
例如,函数$J=3(a+bc)$在$(a=5,b=3,c=2)$处的计算图为
计算任意两个节点之间的导数关系,可以从右向左计算相邻节点间的导数关系,之后将导数乘起来,在微积分中称为链式法则
从前往后计算结果的过程称为前向传播,从后往前计算导数的过程称为后向传播
向量化(Vectorization)
用于减少代码中的循环,增加计算效率
本质上是使用矩阵乘法来加速运算