pytnon下的自然语言处理机器学习和人工智能入门深度学习·神经网络·计算机视觉

吴恩达-神经网络和深度学习(第二周神经网络基础)

2017-09-07  本文已影响110人  双愚

学习如何用神经网络的思维模式提出机器学习问题、如何使用向量化加速你的模型。

如下图:


Notation

二分分类【Binary Classification】

logistic回归

这是一个学习算法,用在监督学习中,
如下图:


logistic

logistic回归损失函数

损失函数【error function】在单个训练样本中定义的,他衡量了在单个训练样本上的表现
成本函数【cost function 】在全体训练集样本下的表现-->对损失函数求和
对以上函数要找到合适的参数w和b
成本函数用于衡量参数w和b的效果

如下图:


mark
mark

梯度下降法【Gradient Descent】

导数

等于= be equal to

计算图

可以说,一个神经网络的计算都是按照前向或者反向传播过程来实现的,
首先计算出神经网络的输出
首先计算出神经网络的输出,紧接着一个反向传播操作,后者我们用来计算出对应的梯度或者导数,流程图解释了为什么这样实现
流程图,是用蓝色箭头画出来的的,从左到右的计算

流程图

计算图的导数计算

从右到左计算导数


mark

logistic回归中的梯度下降法(用偏导数实现)

导数流程图来计算梯度用偏导数有点大材小用,但对理解比较好


mark

m个样本的梯度下降

运用到整个样本集中


for循环

向量化

循环很低效率,用向量化来加速运算(np.function)
z=np.dot(w, x) + b

mark
可能有人说:可扩展深度学习实现是在GPU(图像处理单元)上做的,而我们做的再jupyter notebook上(CPU)
但GPU和CPU都有并行化的指令,SIMD单指令流多数据流,这点对GPU和CPU上面是成立的,只是GPU更擅长SIMD运算

进一步向量化logistic回归

mark

向量化logistic回归的梯度输出

mark

这就得到高度向量化的,高效的logistic回归梯度下降法

python中的广播(使python和Numpy部分代码更高效)

广播(broadcasting)对列向量,行向量都有效
例子:


mark mark

实现神经网络算法时主要用到的广播形式


mark

关于python/numpy向量的说明

千万不要用秩为1的数组
随意插入assert()声明,要仔细检查矩阵和数组的维度
不要害怕调用reshape,来确保你的矩阵和向量

mark

可以排除,简化甚至消灭代码中各种奇怪的bug

学习链接
4. Logistic代码实战

上一篇下一篇

猜你喜欢

热点阅读