上篇文章讨论过了人工智能的几个核心概念,线性模型,损失函数和梯度下降。下面我们继续探讨。
一、几种梯度下降的方式
1、批量梯度下降法(Batch Gradient Descent,简称BGD)是梯度下降法最初的形式,在更新每一参数时都使用所有的样本来进行更新。缺点:太耗费资源。
2、小批量梯度下降法(Mini-Batch Gradient Descent,简称MBGD):把整个样本切分为若干份,每一份为一个小批量,然后在每一份样本上实施梯度下降算法进行参数更新。
3、随机梯度下降算法(Stochastic Gradient Descent,简称SGD):每个批量只有一个样本,在每个样本上实施梯度下降算法进行参数更新。缺点:收敛比较慢。
二、激活函数
1、为什么要引入激活函数
(1)因为线性模型只能表示线性关系,为了添加非线性,所以引入激活函数。
例如:房价预测中,是一个线性回归的问题,最后的结果是数字,预测的值也是一个数字,是线性的关系,可以暂时不用激活函数。但是比如在买西瓜的例子中,最后是买和不买两种结果,不是线性的,是离散的值。这样我们就需要使用激活函数。
(2)如果是线性关系,不管套几层还是线性的关系,比如f(g(z(x)))三层线性,其实还是一个线性的关系。
2、如何激活
线性结果 输入 激活函数中 输出就是 一个值()可以把它看成一个概率,再设置一个阈值 比如0.5 大于等于0.5 就买,小于0.5 就不买。
3、激活函数介绍
sigmoid:输入范围负无穷到正无穷,进入激活函数,输出为0-1的值
ReLU:就像一个筛选机制一样,选出大于0的东西。输入正负无穷,输出0到正无穷。
ReLU 也叫max(0,x)
三、回归和分类对比
1、线性回归
(1) 预测函数
f(x) = w1x1 + w2x2 + w3*x3 +…
(2) n个样本的损失函数
(3)优化
使用梯度下降进行优化
2、分类
(1)预测函数
f(x) = w1* x1 + w2 * x2 + w3 * x3 +…
添加非线性
把f(x)输入到上图中的x就是对f(x)的激活
即h(x) = 1 / (1+e-f(x))
(2) 损失函数:
其中pi就是h(x),上面是二分类的交叉熵损失函数,多分类的类似
(3)优化
梯度下降进行优化
四、整合的训练过程
(1)随机初始化w,b
(2)输入一批特征(x)和标签(y),计算损失L(w,b)
(3)梯度下降、减少损失函数L(w,b)不断更新w,b
(4)直到Loss保持稳定或者小于一个阈值
这样通过2-3-4循环最后会得到w,b