深度学习|神经网络和深度学习(二)-神经网络的编程基础

本次学习笔记主要记录学习深度学习时的各种记录,包括吴恩达老师视频学习、花书。作者能力有限,如有错误等,望联系修改,非常感谢!


神经网络和深度学习(二)-神经网络的编程基础

  • 一、二分类(Binary Classification)
  • 二、逻辑回归(Logistic Regression)
  • 三、逻辑回归的代价函数(Logistic Regression Cost Function)
  • 四、梯度下降法(Gradient Descent)
  • 五、导数(Derivatives)
  • 六、更多的导数例子(More Derivative Examples)
  • 七、计算图(Computation Graph)
  • 八、使用计算图求导数(Derivatives with a Computation Graph)
  • 九、逻辑回归中的梯度下降(Logistic Regression Gradient Descent)
  • 十、m个样本的梯度下降(Gradient Descent on m Examples)
  • 十一、向量化(Vectorization)
  • 十二、向量化的更多例子(More Examples of Vectorization)
  • 十三、向量化逻辑回归(Vectorizing Logistic Regression)
  • 十四、向量化逻辑回归的梯度输出(Vectorizing Logistic Regression's Gradient)
  • 十五、python中的广播(Broadcasting in Python)
  • 十六、关于python_numpy向量的说明(A note on python or numpy vectors)
  • 十七、jupyter/ipython notebooks快速入门(Quick tour of Jupyter/iPython Notebooks)
  • 十八、(选)logistic损失函数的解释(Explanation of logistic regression cost function)

第一版???????2022-04-11????????初稿 一、二分类(Binary Classification) 实现一个神经网络时,不直接用for循环遍历整个训练集。
1.前向暂停(forward pause) 或 前向传播(forward propogation)
2.反向暂停(backward pause) 或 反向传播(backward propogation)
逻辑回归(logistic regression)是一个用于二分类(binary classfication)的算法。
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

图片大小为64x64像素,就有三个规模为64x64的矩阵,对应红绿蓝三种像素的强度值。
n_x = 12288 表示特征向量的维度,有时为简洁,直接用n
x:表示一个n_x维数据,为输入数据,维度(n_x,1)
y:表示输出结果,取值为(0,1)
(x(i),y(i)):表示第i组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据
M_train:训练样本的个数
M_test:测试集的样本数
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

python可以用X.shape查看维度。
二、逻辑回归(Logistic Regression) 深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

y帽时对y的预测
w是特征权重,维度与特征向量相同
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

三、逻辑回归的代价函数(Logistic Regression Cost Function) 深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

定义损失L(y^hat,y) 来衡量预测输出值 y ^hat和y的实际值有多近
误差平方越小越好,y=1时要让y^hat接近1,y=0时y ^hat尽可能小接近0
四、梯度下降法(Gradient Descent) 成本函数用于衡量参数w和b的效果,在全部训练集上来衡量。
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

横轴代表w和b
梯度下降法所做的是 从初始点开始,朝最陡的下坡方向走一步。
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

:=表示更新
五、导数(Derivatives) 深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

六、更多的导数例子(More Derivative Examples) 深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

七、计算图(Computation Graph) 可以说,一个神经网络的计算都是按照前向或反向传播过程来实现的。首先计算出神经网络的输出。
函数J
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

八、使用计算图求导数(Derivatives with a Computation Graph) 深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

最有效方法是从右到左计算,跟着红线计算。
九、逻辑回归中的梯度下降(Logistic Regression Gradient Descent) 深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

十、m个样本的梯度下降(Gradient Descent on m Examples) 深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

a^i是训练样本的预测值。J函数是损失函数和的平均
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

初始化J、dw1、dw2、db为0
十一、向量化(Vectorization) 向量化通常是消除你代码中显式for循环语句的艺术。
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

GPU和CPU都有并行,SIMD单指令流多数据流
十二、向量化的更多例子(More Examples of Vectorization) 编程或只是回归时,一定要尽量避免for循环。
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

十三、向量化逻辑回归(Vectorizing Logistic Regression) 深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

十四、向量化逻辑回归的梯度输出(Vectorizing Logistic Regression’s Gradient) 深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

十五、python中的广播(Broadcasting in Python) 广播是一种手段,可以让python代码段执行的更快。如下是广播的例子:
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

#jupyter import numpy as np A = np.array([56.0,0.0,4.4,68.0], [1.2,104.0,52.0,8.0], [1.8,135.0,99.0,0.9]) print(A) cal = A.sum(axis=0) print(cal) percentage = 100*A/cal.reshape(1,4) print(percentage)

广播机制对列向量和行向量都有效。
深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

十六、关于python_numpy向量的说明(A note on python or numpy vectors)
import numpy as np a = np.random.randn(5) print(a) print(a.shape) print(a.T) print(np.dot(a,a.T))a = np.random.randn(5,1) print(a) print(a.T) print(np.dot(a,a.T))

十七、jupyter/ipython notebooks快速入门(Quick tour of Jupyter/iPython Notebooks) 这个网上有很多教程,这里就不加了。
十八、(选)logistic损失函数的解释(Explanation of logistic regression cost function) 深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

深度学习|神经网络和深度学习(二)-神经网络的编程基础
文章图片

1
  1. 【深度学习|神经网络和深度学习(二)-神经网络的编程基础】深度学习-吴恩达 ??

    推荐阅读