Deeplearning-Part2
2.1 二分分类
- 逻辑回归(logistic regression)算法
- 输入一个特征向量x,输出一个结果y(1/0)表示判断是/否(训练出一个分类器)
- 说明:
- 将照片切为64*64的像素,每个像素对应R/G/B通道,因此R/G/B均为64*64的矩阵。
- 用一个特征向量x来表示这些数据:
因此,x的总维度(竖着一共有)为64*64*3=12288,Nx=12288
(训练集为m个样本)
- 一个训练集X由训练集中x1/x2等组成,构建神经网络时通常用左边的形式。
2.2 逻辑回归
2.2.1 逻辑回归模型
- 给出条件X,得到一个输出Y(是猫的概率)
- 逻辑回归的参数有W和b,W是一个Nx为的矩阵,b是一个实数。
- 由于线性(蓝色部分)含括了[0,1]及除此之外的范围,而我们不考虑负数的情况,因此用西格玛函数包装。西格玛的取值范围为0~1(在x=0时,y=0.5)。
2.2.1 逻辑回归损失函数
- 我们希望预测值y帽与实际值y帽近似。
- 逻辑回归损失函数(误差函数):
- 误差平方 = (预测值-实际值)的平方 或 0.5*((预测值-实际值)的平方)
- 误差平方越小越好
- 但使用的误差平方后在分析最优解时函数是非凸的,即有多个局部最优解,此时无法使用梯度下降法。
- 成本函数J:训练集中所有损失函数的平均误差
2.2.2 梯度下降法
- 从最抖的地方起开始找凸函数的最低点
- 越来越逼近最低点,公式中紫色方框里的部分为该点的斜率
2.3 计算图
- 正向的流程图(从左到右)
- 反向的流程图(从右到左)
- 正向流程图适合计算成本函数,反向流程图适合计算损失函数(微积分链式计算)
2.4 向量化
- 向量化:避免使用for循环,使运行更为快速和高效
- time.time()
- np.random.rand(多少维度的数组)
- np.dot(a,b)矩阵乘法(矩阵乘积)(https://blog.****.net/u012609509/article/details/70230204)
- 利用numpy库去掉显式的for循环(简化for循环可加速运算)
- python的广播特性:在进行矩阵的加减乘除运算时,如A+B=C,python会将格式不匹配的矩阵自动拓展,方便进行运算
(axis=0为纵向,竖直相加 re.shape函数:重定义矩阵大小)
- 神经网络中常用的python(广播特性)