1.概述
深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。(载自百度百科)
(因为这是学习日志(吴恩达深度学习),以下说法未必标准,也未必正确)
(ps:注意字母大小写)
2.从简单的二分分类开始
我们以处理图像为例子,对一个像素点,我们通过对rgb颜色的分析,得到它的特征,记为x(不一定为一个数字,大部分为一个特征集或者说向量),以x验证是否为某个东西(比如说判断这个是否是红色)得到一个实际结果y,y为0或1,这样得到一个单独样本(x,y)。
那么m个样本记为{(x1,y1),(x2.y2).....(xm,ym)}
同时多个样本叫做训练集,以矩阵形式,可以如下标记
那么现在你要通过神经网络得出一个预测结果y帽(写法如下图),先得对特征x进行一定处理,用于得到预测结果的函数称为激活函数,简单的激活函数Sigmoid()。详细如下图
这个激活函数是一个线性函数,值域为(0,1),中间过1/2,导数从无穷小先增后减最后到无穷小。这个函数满足输出必为(0,1)。
w和b(两者不一定为单个数字,绝大部分为一个集合或者说向量)为我们需要不断修正得参数,也是神经网络需要训练的地方。
那么我们通过算法得到的预测结果y帽和y就有差距,那么为了计算这个误差,有一个损失函数(或者叫误差函数)来计算,记做Loss()或者L()。如图(log默认以e为底)
于此同时,我们要评定我们的计算结果,设置了一个成本函数J(),即对m个向量的损失做一个平均。如图
之前也说了我们训练神经网络的参数是w和b,那修改它就是关键,神经网络不断地计算通过梯度下降找到全局最优解。如图
那我们怎么去调整参数w和b呢?
答案是微分(求导)
现在我们开始从单个独立样本分析过程
一个样本提供特征x1,x2,那我们对此给出w1,w2,b1,b2。我们是根据损失函数得到的结果倒推修改w和b,倒推就是微分(求导)的过程。如图
(da为dL/da的缩写,dz为dL/dz的缩写,以此类推)
学习自然还有一个参数叫做学习效率阿尔法,这个参数会影响神经网络的训练速度
接下来我们用代码简写2层网络