Neural Networks and Deep Learning (Week 2)——Neural Networks Basics

Basics of Neural Network Programming——Binary Classification

(一)Logistic regression as a Neural Network

一、Logistic regression为例

1. 输入一张图片,希望输出是1/0,1代表图片识别结果是一只猫,0代表不是一直猫

一张图片在计算机中的存储形式为矩阵,如果是一张64*64的图片,则存储为3个64*64的实数矩阵,分别代表红、绿、蓝三个通道的值。

将三个矩阵中的元素组成一个整体的向量,对于一个64*64的图片来说,最后形成的矩阵维度为64*64*3=12288

2.标注

(x,y)表示一个样本,x是N维实向量中的一个样本,y是标签,取值为1或0

m是训练集的样本总个数,m(test)表示测试集的样本总个数

X表示训练集中的总样本X,X.shape=nx*m

Y表示标签的集合,Y.shape=1*m

二、Logistic Regression

在这里作为一个二分类问题的算法

主要参数是给定的特征向量X,预测标签γ=P(y=1|x)

w是一个Nx维的向量,b是一个实数

最后的结果因为要是一个概率,因此取值在0到1之间,使用sigmoid函数进行值变换

三、Logistic Regression cost function

四、Gradient Descent

五、Derivation

六、More Derivative Examples

七、Computation graph

八、Derivatives with a Computation Graph

九、Logistic Regression Gradient Descent

BP网络链式求导,分别求出w,b改变时对L的影响

loss值是对于一个样本而言的,cost function是对于多个样本的数据集而言的

在这里,L对于z求偏导的结果为a-y

十、Gradient Descent on m Examples

在第九部分描述了如何计算单个样本的链式求导后,这部分介绍的是m个样本的求导案例

a(i)是训练样本的预测值

在这里要实现两个或多个for 循环,特征越多,所用的for循环越多,所以会造成很大不便,使用Vectorization。

(二)Python and Vectorizaton

一、Vectorization

numpy中的dot是指矩阵乘法,即np.dot(w,x),表示矩阵w与x相乘

用Jupyter notebook进行代码计算:

结果表明向量化比非向量化的运行时间降低了100多倍

另:numpy中的time是以秒为单位的

GPU和CPU→SIMD(single instruction multiple data)单指令数据流

二、More Vectorizaition Examples

要注意避免明显地使用for循环

除了之前的矩阵乘法外,还有求e的幂次方、对数运算、绝对值、最大值等

因此每次在想写for循环时,可以考虑是否可以调用numpy中的内置函数

对该逻辑回归算法进行向量化

三、Vectorizing Logistic Regression

                                                                                                                                                                                                                                     

 四、Vectorizing Logistic Regression's Gradient Output


五、Broadcasting in Python

     

不幸:Jupyter再次死掉,,,

问题:这里为什么不能直接除呢?加reshape(1,4)的意义是什么?

用Linux试了一下,结果是阔以滴

A.sum(axis=0)表示按列相加,垂直求和

A.sum(axis=1)表示按行相加,水平求和

疑惑解答了!:当确定矩阵的维度时可以不用加reshape,若不确定则加,以确保它是正确的列向量或行向量

广播适用于行列向量

六、A note on python/numpy vectors

排除其他奇怪的bug的技巧:

七、Explanation of logistic regression cost function

来吧,先复习一下Logistic Regression

将线性函数分类,hx=g(wTx),将函数值置于0到1之间,既叫sigmoid函数,也叫logistic函数

即hx=1/1+e-wTx

函数图像为:

决策边界:确定参数集,整个y函数大于0,归为第一类,小于零,归为第二

猜你喜欢

转载自blog.csdn.net/weixin_38527856/article/details/85997829