2.1二分类
logistic 回归输入输出参数
场景描述:将一张图片判断是否为猫
一张图片 6464
输入向量X:红绿蓝的亮度值,进行拼装成6464*3=12288个值的输入向量
预测输出结果标签y:1或0 也就是预测图片上是否有猫
训练集:{(x,y)…(xm,ym)} 共m个训练集
m_train 训练集个数,nx是属性个数
测试集:m_test 测试集个数
2.2logistic 回归
输入:x (x为nx形式的矩阵)
输出:y=1的概率 记为y
参数:W(nx形式的矩阵),b(1*n形式的矩阵)
sigmoid函数 f(x)
x is large,f(x)接近1
x is small(large negative number),f(x)接近0
其他表示形式
输入x 多加一个1,则输入矩阵变成n_x+1维矩阵向量
这样w和b就可以融为一个参数
2.3 cost function 损失值函数
作用:衡量模型预测输出的y和实际的y有多接近
如 误差平方,误差平方越小表明模型越好
但是误差平方函数不适合梯度下降时进行优化
在logistic回归中使用的是
证明该函数也是 函数越小表明模型越好
证明:
如果y = 1,则logy^ 也需要越大,即y^越接近1( y ^在0-1之间)
如果y = 0,则log(1-y^)需要够大,也是y ^尽可能小,即越接近0越好
以上损失函数是基于单个样本;基于整个样本,与参数相关的总体成本函数,用于优化w和b的 成本函数如下:
2.4 如何使用梯度下降法进行优化模型
梯度下降就是朝着下降速度更快的方向下降,使无限接近全局最优值。公式表示:
学习率α :用于决定每次迭代下降的步长
导数dw:表示J(w)对w求导
迭代(在忽略b的情况下):
梯度下降图示:
在关注b的情况下:
2.5 微积分-导数Derivatives
斜率
直线的斜率在哪里都一样
2.6 更多导数的例子
导数公式
2.7 计算图
从左向右的流程图,计算J的值
反向进行优化J函数
2.8 使用计算图求导
链式法则
a 影响v ,v影响J,求导
2.9 logistic回归中的梯度下降法
计算偏导数来实现logistic回归的梯度下降法
反向传播:
从右向左依次求偏导
根据学习率等公式进行更新参数大小
如下图所示 更新w1
同理可以更新dw2 和 db
以上是根据单个样本进行更新模型参数的一次迭代过程
2.10 m个样本的梯度下降方法
m个样本的损失函数:
图 迭代循环:
上标i 代表是对第 i 个训练样本进行计算,循环中计算的是累加值
计算完平均值后,使用 迭代改进的公式进行改进参数
logistic模型改进中,图 迭代改进中应该有两个循环:循环1 循环遍历m个样本;循环2: 循环遍历n个属性,累加dwn
使用 向量化 可以加速运算(显示的循环 对于大数据集会很慢)
2.11 向量化
加速算法速度,不用for循环去进行乘法,而是使用矩阵的点乘
2.13 向量化logistic回归
b会自动变成1*m的向量,是因为python的广播?
2.14 向量化logistic回归的梯度输出
2.15 python中的广播
Python 会在常数+向量的时候自动将常数
Python的广播会自动扩散
建议可以买本numpy参考书
2.16 关于Python_numpy向量的说明
提出建议:使用(5,1)
而不是(5,)或者(n,)的向量
可以使用reshape(5,1)
或者创建的时候np.random.randn(5,1)就会创建五行一列的矩阵
使用np.random.randn(5)能够创建出rank 1的数组
2.17 jupyter_ipython笔记本的快速使用
ctrl+enter 快速运行代码
重启内核 如果中途报错
2.18 logistic损失函数的解释
sigmoid函数:
p(y|x)是给定样本x条件下y取值的概率
公式推导:
将两个公式合并
单个训练样本的损失函数表达式
因为想要损失最小,而p(y|x)的概率是希望越大越好,越大 测试样本越接近真实值,因此
log = -L()
全部训练样本的损失函数表达式
最大似然函数
同 单个样本损失函数一致,损失函数越小就是log越大,
因此log P = - 累加
累加 log 函数被称为最大似然函数
成本函数J(w,b)
注意 logistic函数都是假设的样本独立同分布