第一周 深度学习概论
1.2 什么是神经网络?
The tern deep learning refers to training neural networks.
“深度学习”指的是训练神经网络
“修正线性单元”即ReLU
单神经元神经网络。
1.3 用神经网络进行监督学习
几乎目前所有的神经网络的经济价值都在“监督学习”的环境下面。
神经网络在预测广告方面做得非常好。
过去几年里,计算机视觉,也有了很大的进展。这就要感谢深度学习。语音识别,机器翻译的进步也非常大。
图像领域里面,我们经常应用的是卷积神经网络。通常缩写为CNN。- 音频是一维的时间序列,对于序列数据,你经常使用RNN。循环神经网络。
雷达信息需要混合的神经网络结构,
标砖神经网络 卷积神经网络 循环神经网络。结构化数据 和 非结构化数据
- Audio Image 文本
从历史角度来看,非结构化数据 让计算机理解起来更难。
人类更擅长理解音频和图像,文字是一个更近代的发明。
多亏了深度学习,和神经网络的发展,计算机现在能很好的解释非结构化数据
音频 图片 和自然语言处理。
神经网络彻底改变了监督学习,正在创造着巨大的经济价值。基本的神经网络背后的技术理念大部分都不是新概念,有些甚至有十几年历史了。
为什么最近神经网络才成为你可以使用的强大工具?
1.4 为什么神经网络会兴起?
规模一直在推动深度学习的进步。说到”规模”不仅是神经网络的规模
我们需要一个有许多隐藏单元的神经网络。有许多的参数,有许多的链接。而且还有数据规模。
事实上,要在神经网络上获得更好的表现,在今天看来最好的手段,往往就是,
要么训练一个更大的神经网络。要么投入更多的数据。这只能在一定程度上起作用。
因为最终你耗尽了数据,或者网络规模太大,需要的训练时间太久。
但提升规模,已经让我们在深度学习的世界中取得了巨大的进展。
为什么神经网络这么流行?
在深度学习崛起的初期, 是数据和计算能力规模的进展。算法的创新。
- Data Computation Algotithms
深度学习在今后的很多年还会有很大的进步。
第二周 神经网络基础
2.1二分分类
本周我们将会学习神经网络编程的基础知识
(Basics of Neural Network Programming)。
- 当你要构建一个神经网络,有些技巧是非常重要的。
例如:当你需要遍历的时候。不需要使用for循环。
正向传播步骤 反向传播步骤
logistic回归是一个用于二分分类的算法。
计算机要保存一个图片,需要保存三个独立矩阵。分别对应红、绿、蓝三个颜色通道。
2.2logistic回归(Logistic Regression)
Parameters:
sigmoid函数。
2.3logistic回归损失函数
Loss(Error)function
cost function(成本函数)
看不懂
2.5 导数
shope(斜率)即导数
2.6 更多导数的例子
2.7 计算图(Computation Graph)
u = bc
v = a+u
J = 3v
2.9 Logistic中的梯度下降算法
变换参数w和b的值 来使得损失函数最小化。
2.10 m个样本的梯度下降
2.11 向量化
- 向量化通常是消除你代码中显示for循环的艺术。
- 在深度学习安全领域,深度学习中通常发现在训练大数据集时,深度学习算法才表现更优越,所以代码运算的快变得非常的重要。所以在深度学习领域,完成向量化变成了一个非常重要的技巧。
w是列向量,x也是列向量。
python:
import numpy as np
import time as timer
a = np.array([1,2,3,4])
print(a)
a = np.random.rand(1000000)
b = np.random.rand(1000000)
tic = timer.time()
c = np.dot(a,b)
toc = timer.time()
print(c)
print("vectorized version"+ str(1000*(toc- tic))+"ms")
c = 0
tic = timer.time()
for i in range(1000000):
c += a[i]*b[i]
toc = timer.time()
print(c)
print("for loop"+ str(1000*(toc- tic))+"ms")
- GPU 更擅长单指令多数据流(SIMD)计算
2.12 向量化的更多例子
当你编写新的网络的时候,尽量避免for循环。
2.13 向量化logistic回归
2.15 python中的广播
- (m,n)的矩阵 加减乘除(1,n)的矩阵
(1,n) ——> (m,n) - (m,n)的矩阵 加减乘除 (m,1)的矩阵
(m,1) ——> (m,n)
import numpy as np
A = np.array([[56.0,0.0,4.4,68.0],
[1.2,104.0,52.0,0.0],
[1.0,135.0,99.0,0.9]])
print(A)
cal = A.sum(axis=0)
print(cal)
percentage = 100*A/cal.reshape(1,4)
print(percentage)
第三周 浅层神经网络
3.7 为什么需要非线性激活函数?
为什么神经网络需要非线性激活函数?