吴恩达 《神经网络与深度学习》笔记(持续更新)

第一周 深度学习概论

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:

wϵRnx w ϵ R n x

bϵR b ϵ R

ŷ =(wTx+b) y ^ = ( w T x + b )

sigmoid函数。

sinmoid(z)=11+ez s i n m o i d ( z ) = 1 1 + e − z

2.3logistic回归损失函数

Loss(Error)function
cost function(成本函数)

看不懂

2.5 导数

shope(斜率)即导数

2.6 更多导数的例子

2.7 计算图(Computation Graph)

J(a,b,c)=3(a+bc) J ( a , b , c ) = 3 ( a + b c )

u = bc

v = a+u

J = 3v

2.9 Logistic中的梯度下降算法

z=w1x1+w2x2+b z = w 1 x 1 + w 2 x 2 + b

ŷ =a=σ(z) y ^ = a = σ ( z )

L(a,y)=(ylog(a)+(1y)log(1a)) L ( a , y ) = − ( y l o g ( a ) + ( 1 − y ) l o g ( 1 − a ) )

变换参数w和b的值 来使得损失函数最小化。

2.10 m个样本的梯度下降

2.11 向量化

  • 向量化通常是消除你代码中显示for循环的艺术。
  • 在深度学习安全领域,深度学习中通常发现在训练大数据集时,深度学习算法才表现更优越,所以代码运算的快变得非常的重要。所以在深度学习领域,完成向量化变成了一个非常重要的技巧。

z=(wTx+b) z = ( w T x + b )

w是列向量,x也是列向量。

wϵRnx,xϵRnx w ϵ R n x , x ϵ R n x

python:

z=np.dot(w,x)+b z = n p . d o t ( w , x ) + b

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 为什么需要非线性激活函数?

为什么神经网络需要非线性激活函数?

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值