您的位置:首页 > 理论基础 > 计算机网络

1.神经网络和深度学习-第一周(概论)与第二周(神经网络基础)

2018-02-15 00:09 746 查看
Core:学习神经网络和深度学习的基础与案例

第一周 深度学习概论

ReLU,全称是“修正线性单元”,rectified linear unit。神经元可以说是一个relu。



神经网络非常善于计算从x到y的标准映射函数,为了创造更大的价值,要仔细选择x和y。

循环神经网络非常适合处理一维序列数据,其中包含时间成分。

机器学习被应用于结构化数据和非结构化数据。

结构化数据:数据的数据库,意味着每个特征,比如房屋大小,卧室数量等,有清晰的定义。(预测房屋价格,广告推荐系统)

非结构化数据:比如音频、原始音频、图像,这里的特诊可能是图像中的像素值,或者是文本中的每个单词。多亏了深度学习,可以帮助计算机更好的理解unstructured data.(识别)

本课程会学习很多技巧,用于结构化数据和非结构化数据。



深度学习的兴起的因素:data, computation, algorithms。

更多信息:https://zhuanlan.zhihu.com/p/31577879

第二周 神经网络基础

本周任务:学习神经网络编程的基础知识,了解神经网络正向传播和反向传播,还有算法的过程,以及如何高效实现神经网络。

实现一个神经网络,如果要遍历整个训练集,并不需要直接使用for循环。神经网络的计算包括:正向传播和反向传播的过程。

Binary Classification and logistic regression :

logistic回归是一个用于二分分类的算法(label:1(cat), 0 (not cat))。

X.shape是python中用来查维度的命令。

如何将训练样本用矩阵X表示(用简单的形式),以及输出标签y的表示。



要实现神经网络时会发现,好的惯例符号能够将不同训练样本的数据联系起来(这里的数据可以不只是x和y),将不同的训练样本数据取出来,放在不同的列上,

线性回归不是一种非常好的二元分类算法,因为我们希望的概率值是在0到1之间的,但是y=wTx+by=wTx+b的值明显不只在0到1之间,甚至可能出现负数。所以,在Logistic回归中,输出变为



也就是用到了激活函数Sigmoid。当实现logistic回归时,要做的就是学习参数w和b。当对神经网络编程时,通常会把w和b分开,b为拦截器interceptor。要求w和b,需要定义一个成本函数cost function 或 误差函数error function,可用来衡量算法的运行情况。



下面是误差平方的lost function,但在逻辑回归中通常不这样用,因为,这样使用会使得之后的优化问题变成非凸的,梯度下降也变得不那么好用,会得到许多局部最优解,而非全局最优。



在逻辑回归中,定义一个不同的loss function,起着与误差平方相似的作用,但这是一个凸的优化问题,很容易做优化,即



为啥这个cost function是OK的?



loss function是在单个训练样本(single training example)中定义的,衡量了在单个训练样本上的表现。而cost function衡量的是在全体训练样本上的表现,是基于参数的总成本,考虑的是所有训练样本。



上式是一个凸函数。

the loss function for training example~

the overall cost function for the parameters of your algorithm~

总之,损失函数衡量单一训练样例的效果。成本函数用于衡量参数w和b在训练集上的效果,在全部训练集上衡量,是参数w和b的函数。

梯度下降

Task:如何使用梯度下降法来训练或者学习训练集上的参数w和b。

对于逻辑回归而言,任意的参数初始化方法可以说是有效的,通常用0来进行初始化。

更新参数时要做的工作:



αα学习率可以控制每一次迭代,或者梯度下降法中的步长。

偏导数的含义:计算函数关于其中的一个变量在对应点所对应的斜率。在代码中,一律用dw和db。函数的导数就是函数的斜率。而函数的斜率,可以是在不同的点是不同的。

一个神经网络的计算都是按照前向和反向传播过程来实现的。首先计算出神经网络的输出,紧接着进行一个反向传播的操作(计算对应的梯度或者导数)。这个过程可以用计算图来描述。当然了,也可以用计算图计算出函数J的导数。

computation graph:



当编程实现反向传播时,通常需要关心一个最终输出值(a final output variable)。dvar

接下来,该如何计算偏导数来实现logistic回归的梯度下降法?

核心关键点是,其中的几个重要公式用来实现。

Logistic回归的梯度下降法:



假设样本只有2个特征x1x1和x2x2。为计算zz,需要输入参数w1w1,w2w2和b,还有特征x1x1和x2x2。





上图展示了单个训练样本的一次梯度更新。值得注意的是,训练logistic回归模型不仅仅只有一个训练样本,而是有m个训练样本的整个训练集。应该用到整个样本集,而非单个样本上,那么,怎么做到的呢?

同时需要一起应用的就是logistic回归和梯度下降法。用dw1,dw2,db作为累加器。用一个for循环遍历所有的特征。



上图只是一个梯度下降的迭代。

当用深度学习算法时,在代码中显式使用for会使得算法很低效。在深度学习领域有很多大的数据集,能够将算法完全不用显式的for循环的话,将会非常重要。解决方法:向量化技术,帮助代码拜托显式的for。用向量化拜托for循环已经变得相当重要,因为代码需要变得高效。

Vectorization

向量化是消除代码中显式for循环语句的艺术。



用随机值创建了一个百万维度的数组~

import time
import numpy as np
a = np.random.rand(1000000)
b = np.random.rand(1000000)

tic = time.time()
c = np.dot(a,b)
toc = time.time()
#快
print(c)
print("Vectorized version:" + str(1000*(toc - tic)) + "ms")

c = 0
tic = time.time()
for i in range(1000000):
c += a[i]*b[i]
toc = time.time()
#慢
print(c)
print("For loop:" + str(1000*(toc - tic)) + "ms")


python的numbpy能够充分利用并行化,CPU和GPU都有并行化的指令(SIMD指令),只是GPU更加擅长SIMD计算。So,经验法则是:当编写新的网络时,只要有其他可能(如使用内置函数),就不要使用显式for循环。



In fact,对所有训练样本不用任何for循环,可以写代码一次处理整个训练集,且基本上是同时处理。如将向量化实现在logistic回归上,同时处理整个训练集来实现梯度下降法的一步迭代,即针对整个训练集的一步迭代。

Vectorizing Logistic Regression



整个训练集的预测值是a

Vectorizing Logistic Regression’s Gradient Computation

向量化m个数据集的梯度



完善逻辑回归

逻辑回归+梯度下降的一次迭代



需要注意的是,虽然尽量不要使用for,但是若希望多次进行梯度下降,则还是需要for循环的。

Broadcasting

可以让代码段执行的更快的一项技术。

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)
#sum vertically
cal = A.sum(axis=0)
# reshape o(1),代价很小,可以确保矩阵形状是想要的
print(cal)
percentage = 100*A/cal.reshape(1,4)
print(percentage)


axis = 0 or 1



所谓的广播,在matlab中函数为bsxfun,不过是类似啦。

为防止报一些难的bug错误,不要使用形状是(5,)或者(n,)这种秩为1的数组(rank 1 array)。如a = np.random.rand(5)。





如果在代码中做了很多事情,所以有点儿不太确定一个向量具体的维度是多少,可以throw an assertion statement,如assert(a.shape == (5,1)),assert执行很快,可以看成是代码的文档。如果最后的结果恰巧是rank 1 array,那么进行reshape。



最小化损失函数就是最大化log(P(y|x)),单个样本的Loss function(-)



m个训练样本的总体cost function如何表示?

假设所有的训练样本服从同一分布且相互独立,所有这些样本的联合概率就是每个样本概率的乘积。极大似然估计,使得给定样本的观测值概率最大。

极大似然估计(maximum likelihood estimation):求一组参数,使这个式子取最大值。



参考信息:https://zhuanlan.zhihu.com/p/31594529
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐