深度学习笔记(一)(2)神经网络的编程基础

    技术2022-07-15  67

    深度学习笔记(一)神经网络的编程基础

    返回目录

    根据吴恩达深度学习笔记5.7版本进行整理,把我觉得有用的给写下来,做到不水吧,写博客一来希望巩固知识,二来或许能帮到大家,三来是一种自律的过程。望他能见证我大二的暑假。

    符号定义

    第二周

    2.1二分类问题(Binary Classification)

    用一对(𝑥, 𝑦)来表示一个单独的样本,x表示输入,y表示输出,他只有0或1的值。

    2.2 逻辑回归(Logistic Regression)

    Hypothesis Function(假设函数)的介绍 sigmoid函数

    2.3 逻辑回归的代价函数(Logistic Regression Cost Function)

    为了训练逻辑回归模型的参数参数𝑤和参数𝑏我们,需要一个代价函数,通过训练代价函数来得到参数𝑤和参数𝑏。损失函数用来衡量预测输出值和实际值有多接近,就是如果𝑦等于 1,我们就尽可能让𝑦^ 变大,如果𝑦等于 0,我们就尽可能让 𝑦^变小。 损失函数是对于单个训练样本中定义的,它衡量的是算法在单个训练样本中表现如何,为了衡量算法在全部训练样本上的表现如何,我们需要定义一个算法的代价函数,算法的代价函数是对𝑚个样本的损失函数求和然后除以𝑚: 我们需要找到合适的𝑤和𝑏,来让代价函数 𝐽 的总代价降到最低。

    2.4 梯度下降法(Gradient Descent)

    2.9 逻辑回归中的梯度下降(Logistic Regression Gradient Descent)

    前向传播: 反向传播:

    2.10 m 个样本的梯度下降(Gradient Descent on m Examples)

    道带有求和的全局代价函数,实际上是 1 到𝑚项各个损失的平均。 所以它表 明全局代价函数对𝑤1的微分,对𝑤1的微分也同样是各项损失对𝑤1微分的平均。 代码流程(这个只是方便理解一下),只应用了一步梯度下降:

    J=0;dw1=0;dw2=0;db=0; for i = 1 to m z(i) = wx(i)+b; a(i) = sigmoid(z(i)); J += -[y(i)log(a(i))+(1-y(i))log(1-a(i)); dz(i) = a(i)-y(i); dw1 += x1(i)dz(i); dw2 += x2(i)dz(i); db += dz(i); J/= m; dw1/= m; dw2/= m; db/= m; w=w-alpha*dw b=b-alpha*db

    若要多次梯度下降外面还需要一个for循环

    2.14 向量化 logistic 回归的梯度输出(Vectorizing Logistic )

    Regression’s Gradient) 去for循环的一种方法,减少时间复杂度。 图中仍然是一次梯度下降,多次梯度下降仍然需要加for循环。

    2.15 Python 中的广播(Broadcasting in Python)

    numpy 广播机制:如果两个数组的后缘维度的轴长度相符或其中一方的轴长度为 1,则认为它们是广播兼容的。广播会在缺失维度和轴长度为 1 的维度上进行。对于 Matlab/Octave 有类似功能的函数 bsxfun。 总结一下broadcastting: 返回目录

    Processed: 0.009, SQL: 9