神经网络的基础
文章目录
- 神经网络的基础
- 一、二分分类
- 二、logistic回归
- 三、梯度下降法
- 四、logistic回归的梯度下降法
一、二分分类
- 二分分类就是训练出一个分类器,将图片的特征向量x作为输入,预测结果y为1还是0。比如:将一张猫的图片提取出它的特征向量x,并将x输入进我们训练出的分类中,可以输出结果为y,就是分类出了这张图片是猫。
- 常用的符号
- 用一对(x,y)作为一个单独的样本
- 每一个训练样本都有一个x,x是一个nx维度的特征向量
- y是预测值,取0和1
- m表示训练样本的个数,(x(1),y(1))表示一个训练样本
- 训练样本用矩阵X表示
二、logistic回归
- logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断等。 这是一个学习算法,用在监督学习问题中。
我们不直接使用 y = (w^T x + b) 这个函数,因为我们希望y的值应该介于0到1之间,而事实上w^T x + b常常大于1甚至小于0
我们用sigmoid函数 y=σ (z),我们让 z = (w^T x + b),因此就得到 y = σ (w^T x + b)。下图是sigmoid的函数图形,y的值就可以确定在0到1之间了 - 损失函数(定义在单个训练样本上的)。L(y﹡,y) = -(y logy﹡ + (1-y)log(1-y﹡)),其中y﹡为预测值,y为实际值。当L(y﹡,y)的值越小就越接近我们想要的,因此我们可以令y = 1和y = 0分别来分析一下这个式子(稍微分析一下就可以得出结果),就可以得出这个损失函数是可以更好得起到作用。
- 成本函数(定义在整个训练集上的)。成本函数是用来衡量我们训练得出的w和b的效果
- 成本函数就是多个训练样本损失函数的平均值。
三、梯度下降法
- 原理: 梯度下降法就好比一个蒙着眼睛的人下山,每次在负梯度最大的方向,向前走一步,走出一步后,比较前后的的落差,若落差小于一定阈值,则认为到达山谷,若落差大于阈值,则继续向前走,直到到达山谷。
- 概念:学习率又叫做步长,决定了在梯度下降迭代的过程中每一步向降低的方向走的大小;还有就是上面提到的损失函数。
- 影响因素:步长太小的话,收敛慢,步长太大,容易远离我们想要的最低的那个点,拿上面的例子来说,比如你原本差一小步就到达谷底,但是你走了一大步,这样就跨过了谷底,到了另一边的坡上。
- 分类:1.批量梯度下降法(使用所有的样本)2.随机梯度下降法(随机选取一个样本训练) 3.小批量梯度下降法(不使用所有的样本,但是会选取一定量x的样本,一般0<x<m)
四、logistic回归的梯度下降法
- 单个样本的梯度下降法
假设样本只有两个特征x1,x2,我们需要输入参数w1,w2,b计算sigmoid函数中的z
我们可以通过求导,偏导计算出"dw1" = x1 * dz = x1*(a-y)(这里的a就是y﹡) “dw2” = x2 * dz = x2*(a-y) db = dz = a-y(这些可以通过求导可以得到详细可以看
[]:
)
然后我们可以更新每一次的 w1 = w1 - α * dw1 w2 = w2 - α * dw2 b = b - α(α为学习率即步长),这就是单个样本的一次的迭代。进行多次迭代之后来最小化损失函数L(a,y)的值就是我们的目的。
- m个样本中的梯度下降法
对于单个样本,我们使用的是对损失函数进行每一次迭代。而对于m个训练样本,我们要用到的就是成本函数J (w,b)
具体过程如上。用一个循环遍历m个样本,再将每个样本中的dw1 dw2 db 累加,最后除以m。这就是我们在m个训练样本上的梯度下降法的一次迭代。进行多次迭代之后,最小化成本函数,找出合适的w,b就是我们的目的。 - 在每一次运算中我们会发现会用到显示循环for,这会让效率十分低下,我们在python中会使用到numpy模块,用向量化摆脱显示循环,从而提高效率。