-
2021-07-27 21:43:00
为了方便学习深度学习课程,转载一个吴恩达老师的一个深度学习笔记,转载的网站是下面这个
https://blog.csdn.net/red_stone1/article/details/80207815从去年8月份开始,AI界大IP吴恩达在coursera上开设了由5们课组成的深度学习专项课程,掀起了一股人工智能深度学习热潮。这里附上deeplearning.ai的官网:
关于该深度学习专项课程,本人非常推荐!它对于理解各种算法背后的原理非常有帮助,同时提供了大量的应用场景,涉及图像、语音、自然语言理解等各方面,还提供了一些工具函数、数据集。笔者在学习这5门课之际,也精心制作了每门课程及精炼笔记,把每节课的主要核心内容记录下来。现在所有的笔记都已完成。为了方便大家查阅,特地将所有的笔记汇总在这篇文章里。
1. 神经网络与深度学习
2. 优化深度神经网络
3. 构建机器学习项目
4. 卷积神经网络CNN
5. 序列模型
6. 其它资源
更多AI资源请关注微信公众号:AI有道(ID:redstonewill)
更多相关内容 -
吴恩达深度学习笔记
2018-03-20 15:11:08吴恩达的深度学习笔记最新版本,DeepLearning.ai DeepLearning.ai DeepLearning.ai -
斯坦福大学机器学习课程 吴恩达深度学习笔记v5.44
2018-08-26 09:45:02神经网络图解机器学习.pdf吴恩达深度学习笔记v5.44 图解机器学习 ,(日)杉山将著 ,P226 sample -
吴恩达深度学习笔记.pdf
2021-11-21 16:00:05深度学习 -
吴恩达深度学习笔记(黄海广博士高清版)
2019-05-07 07:57:47本人黄海广博士,以前写过吴恩达老师的机器学习个人笔记。有朋友报名了课程,下载 了这次课程的视频给大家分享。Coursera 的字幕不全,同学们在学习上感觉非常不方便,因 此我找志同道合的朋友翻译和整理字幕,中... -
吴恩达深度学习笔记v5.44.pdf
2019-07-05 22:51:31吴恩达深度学习笔记,比较通俗易懂,希望对大家学习深度学习知识会有帮助。 -
799页!吴恩达深度学习笔记.PDF
2022-03-10 00:37:39吴恩达深度学习课程,是公认的最优秀的深度学习课程之一,目前没有教材,只有视频,本文提供完整笔记下载,这本笔记非常适合和深度学习入门。0.导语黄海广博士和同学将吴恩达老师深度学习视频课程做了...吴恩达深度学习课程,是公认的最优秀的深度学习课程之一,目前没有教材,只有视频,本文提供完整笔记下载,这本笔记非常适合和深度学习入门。
0.导语
黄海广博士和同学将吴恩达老师深度学习视频课程做了完整的笔记,笔记pdf放在github上,下载后可以打印。笔记基于课程视频和字幕制作。感谢吴恩达老师为广大爱好者提供如此实用的教程!
目前仅在Github渠道,累计下载超过了100万次!
本次更新:很多同学说看不懂公式,我增加了数学基础作为附件放在笔记里,供查阅。
课程视频:
https://www.bilibili.com/video/BV16r4y1Y7jv
笔记可以作为大学本科、硕士、博士的辅助教材。请不要用于商业用途。
同学们可以自由打印。深度笔记pdf一共799页,建议去网上找打印店(5分钱双面的很多)。
笔记打印效果图(现在比这个还厚了,希望有心理准备)
目录
Github 地址:
1.吴恩达老师的深度学习课程笔记及资源(star 数量:14.3k+)https://github.com/fengdu78/deeplearning_ai_books
笔记pdf下载建议用百度云:
链接:
https://pan.baidu.com/s/1EIu04R_Pn7shXk1DGo4QyQ?pwd=43s2
提取码:43s2
若链接失效,可以在公众号回复“吴恩达深度学习”获取网址下载。
往期精彩回顾 适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑 AI基础下载机器学习交流qq群955171419,加入微信群请扫码:
-
吴恩达深度学习笔记Deeplearning深度学习笔记v5.7.pdf
2022-01-11 18:07:22吴恩达深度学习笔记Deeplearning深度学习笔记v5.7.pdf -
吴恩达深度学习笔记v5.5
2018-08-30 21:11:01在这5堂课中,学生将可以习到深度的基础会构建神经网络并用在包括吴恩达本人在内的多位业界顶尖专家指导下创建自己机器学习项目。Deep Learning Specialization对卷积神经网络 (CNN)、递归神经网络 、递归神经网络 ... -
吴恩达深度学习笔记【2】
2021-11-28 19:00:42神经网络 文章目录神经网络前言一、一些基础的numpy语法二、神经网络...学习的第二天 一、一些基础的numpy语法 import numpy as np a=np.array([1,2,3,4])#生成数组 print(a) import time a=np.random.rand(100000神经网络
文章目录
前言
学习的第二天
一、一些基础的numpy语法
import numpy as np a=np.array([1,2,3,4])#生成数组 print(a) import time a=np.random.rand(1000000)#生成随机数 b=np.random.rand(1000000) tic=time.time()#计时 c=np.dot(a,b)#点乘 toc=time.time() print("array time is:"+str(1000*(toc-tic))+"ms")#输出+类似js的字符串合并+强制类型转换 c=0 tic=time.time()#计时 for i in range(1000000):#循环 c+=a[i]*b[i] toc=time.time() print("loop time is:"+str(1000*(toc-tic))+"ms") n=4 u=np.zeros((n,1))#生成零数组 for i in rang n: u[i]=math.exp(a[i])#指数函数 ''' np.log(v) np.abs(v) np.sum(v) np.maxnum(v,0)找包括零的所有数中的最大数 v**2是每个数的平方 1/v就是倒数 '''
import numpy as np a=np.array([[56,0,4.4,68],[1.2,104,52,8],[1.8,135,99,0.9]])#二维数组 print(a) b=np.sum(a,axis=0)#列项求和 #也可以b=a.sum(axis=0) c=100*a/b.reshape(1,4)#a点除b,reshape:让数组变成1行4列 print(c) #assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
同时,python中初始化向量时应注明行列,否则会出现无法转置的奇怪问题。如果你不确定中间结果是不是符合预期,可以使用
assert(a.shape==(5,1))
进行判断,然后用reshape重塑
a=a.reshape((5,1))
上一节提到的logistics损失函数,主要是基于伯努利分布和极大似然的原理二、神经网络
1、原理
已经有模式识别和数学建模基础,故此处简写
具有logistics相似的反向传播,虽然有三层,但一般称作双层神经网络,因为一般输入层不算上。
向量化:
2、代码
我这里用MATLAB实现了一个双层的
MATLAB版本:
clc;clear; m=10;n=5; x=[1:5]'; x=[x*ones(1,5),x*ones(1,5)*0.1]; x=x+0.2*rand(n,m)-0.1; y=[1,1,1,1,1,0,0,0,0,0];%生成原始标签 %初始化 %第一层 node=20;%你想要的节点数量 w1=0.1*ones(node,5);%初始权重w1 b1=0.1*ones(node,1);%初始化b1 z1=rand(20,10); %第二层 w2=ones(1,node); b2=1; z2=w2*z1+b2; a=0.01;%学习率 N=1000; z2=zeros(1,m); dz2=zeros(1,m); %已知训练集x(n*m),标签Y(m*1),以及初始的w(1*n),b(1*1),训练次数N,学习率a %先反向传播第二层 for i=1:N z2=w2*z1+b2; A2=1./(1+exp(-z2)); dz2=A2-y; dw2=1/m*z1*dz2'; db2=1/m*sum(dz2); w2=w2-a*dw2'; b2=b2-a*db2; end %后反向传播第一层 N=1000; Y=z1; dz1=zeros(size(z1)); %已知训练集x(n*m),标签Y(m*1),以及初始的w(1*n),b(1*1),训练次数n,学习率a for i=1:N z1=w1*x+b1; A1=1./(1+exp(-z1)); dz1=A1-Y; dw1=1/m*x*dz1'; db1=1/m*sum(dz1); w1=w1-a*dw1'; b1=b1-a*db1; end Z1=w1*x+b1; Z2=w2*Z1+b2; A=1./(1+exp(-Z2)); AA=A; A(find(A>=0.5))=1; A(find(A<0.5))=0; percent=sum(sign(find(A==y)))/10 J=-1/10*sum(y.*log(AA)+(1-y).*log(1-AA))
还有
python版本:
import numpy as np m=10 n=5 x=np.array([1,2,3,4,5]) x=x.reshape(n,1) x1=x*np.ones((1,n))+0.5*np.random.randn(n,n) x2=0.1*x*np.ones((1,n))+0.05*np.random.randn(n,n) x=np.concatenate((x1,x2),axis=1) y=np.array([[1,1,1,1,1,0,0,0,0,0]])#生成原始标签 #初始化 #第一层 node=20#你想要的节点数量 w1=0.1*np.ones((node,5))#初始权重w1 b1=0.1*np.ones((node,1))#初始化b1 z1=np.random.rand(20,10) #第二层 w2=np.ones((1,node)) b2=1 z2=w2@z1+b2#python的矩阵乘法还挺麻烦 a=0.01#学习率 N=1000 z2=np.zeros((1,m)) dz2=np.zeros((1,m)) #先反向传播第二层 for i in range(N): z2=w2@z1+b2 A2=1/(1+np.exp(-z2)) dz2=A2-y dw2=1/m*z1@dz2.swapaxes(0,1)#转置 db2=1/m*dz2.sum() w2=w2-a*dw2.swapaxes(0,1) b2=b2-a*db2 Y=z1 dz1=np.zeros(np.size(z1)) #已知训练集x(n*m),标签Y(m*1),以及初始的w(1*n),b(1*1),训练次数n,学习率a for i in range(N): z1=w1@x+b1 A1=1/(1+np.exp(-z1)) dz1=A1-Y dw1=1/m*x@dz1.swapaxes(0,1) db1=1/m*sum(dz1) w1=w1-a*dw1.swapaxes(0,1) b1=b1-a*db1 Z1=w1@x+b1 Z2=w2@Z1+b2 A=1/(1+np.exp(-Z2)) temp=0 AA=np.array(A)#numpy.array的数组只能这么复制,否则复制的是指针 for i in range(10): if A[0,i]>=0.5: A[0,i]=1 else: A[0,i]=0 if A[0,i]==y[0,i]: temp+=1 percent=temp*10 print("正确率为"+str(percent)+"%")#必须强制类型转换 J=-1/10*np.sum(np.dot(y,np.log(AA).T)+np.dot(1-y,np.log(1-AA).T)) print("损失函数数值为"+str(J))
正确率为100%
损失函数数值为0.43208082228886674
由于二分类问题比较简单,因此正确率还是不错的,学过MATLAB,没学python,但numpy库很多只是比MATLAB多了个numpy.······但是会遇到上面提到的奇奇怪怪的bug,人性化程度不如MATLAB3、激活函数
tanh函数
Relu函数
其原点无意义Leaky ReLU函数(PReLU)
ELU (Exponential Linear Units) 函数
初值应尽量小
总结
-
吴恩达深度学习课程笔记
2022-02-06 13:48:36吴恩达深度学习课程笔记 -
吴恩达深度学习笔记 主编黄海广
2018-11-22 17:15:01本文档 是针对 吴恩达老师深度学习课程( ( deeplearning.ai)视频做的笔记,主编黄海广 -
吴恩达深度学习笔记_公式推导.zip
2019-06-03 14:02:50吴恩达 深度学习 课程内容及详细公式推导。配合网易云的吴恩达深度学习课程使用更佳 -
吴恩达DeepLearning深度学习笔记
2018-09-13 16:51:28吴恩达老师DeepLearning.ai课程配套的学习笔记,全中文,包括课上所讲的所有内容以及必要截图,很好的学习工具。 -
吴恩达深度学习笔记(2)+作业.pdf
2021-09-28 16:00:17吴恩达深度学习笔记(2)+作业.pdf -
吴恩达深度学习笔记(1)+作业.pdf
2021-09-28 15:59:38吴恩达深度学习笔记(1)+作业.pdf -
吴恩达深度学习笔记整理(一)
2021-01-15 22:03:18吴恩达深度学习笔记整理(一) 本文根据吴恩达深度学习课程内容,抽取重要知识点进行整理,目录如下 吴恩达深度学习吴恩达深度学习笔记整理(一)Course 1 神经网络和深度学习Week 1 Introduction to deep ...吴恩达深度学习笔记整理(一)
本文根据吴恩达深度学习课程内容,抽取重要知识点进行整理,目录如下
吴恩达深度学习
Course 1 神经网络和深度学习
Week 1 Introduction to deep learning
在这一周的课程中,首先构建了一个预测房子价格的简单神经网络,输入为房子的大小,经过一个单个的神经元,输出为房子的价格。
根据预测房屋价格的问题,可以继续扩展,房屋的其他属性如:卧室的数量,所在的位置等等都和最后的房屋价格有关
为什么要使用深度神经网络?
Week 2 Basics of Neural Network programming
n x n_x nx 或者n:输入向量的维度
x x x:输入数据,维度为 ( n x , 1 ) (n_x,1) (nx,1)
y y y:输出数据
( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)}) (x(i),y(i)):表示第i组数据
X = [ x ( i ) , x ( 2 ) , . . . , x ( m ) ] X = [x^{(i)},x^{(2)},...,x^{(m)}] X=[x(i),x(2),...,x(m)]:表示所有训练数据集的输入值,放在一个 n x ∗ m n_x * m nx∗m的矩阵中,m表示样本数目。
Y = [ y ( i ) , y ( 2 ) , . . . , y ( m ) ] Y = [y^{(i)},y^{(2)},...,y^{(m)}] Y=[y(i),y(2),...,y(m)]:对应表示所有训练集的输出值以最简单的Logistic Regression 为例
y ^ = w T x + b \hat{y} = w^Tx+b y^=wTx+b
其中 w w w为权重,是一个 ( n x , 1 ) (n_x,1) (nx,1)的向量
y ^ = P ( y = 1 ∣ x ) 0 ≤ y ^ ≤ 1 \hat{y} = P(y=1|x) 0\le\hat{y}\le1 y^=P(y=1∣x)0≤y^≤1
但 w T x + b w^Tx+b wTx+b不一定在[0,1]之间,所以需要激活函数
最终Output: y ^ = σ ( w T x + b ) \hat{y} = \sigma(w^Tx+b) y^=σ(wTx+b)对于单个样本的损失函数 L ( y ^ , y ) L(\hat{y},y) L(y^,y)
在这里不用平方差来计算,使用对数函数
L ( y ^ , y ) = − y l o g ( y ^ ) − ( 1 − y ) l o g ( 1 − y ^ ) L(\hat{y},y) = -ylog(\hat{y})-(1-y)log(1-\hat{y}) L(y^,y)=−ylog(y^)−(1−y)log(1−y^)
对于整个算法代价函数 J ( w , b ) J(w,b) J(w,b)J ( w , b ) = 1 m ∑ i = 1 m L ( y ( i ) ^ , y ) J(w, b) = \frac{1}{m}\sum_{i=1}^mL(\hat{y^{(i)}},y) J(w,b)=m1∑i=1mL(y(i)^,y)
应用梯度下降法:
w : = w − α ∂ J ( w , b ) ∂ w w:=w-\alpha\frac{\partial{J(w,b)}}{\partial{w}} w:=w−α∂w∂J(w,b)b : = b = α ∂ J ( w , b ) ∂ b b:=b=\alpha\frac{\partial{J(w,b)}}{\partial{b}} b:=b=α∂b∂J(w,b)
这里在简单介绍一下计算图
举例:
J ( a , b , c ) = 3 ( a + b c ) J(a, b, c) = 3(a+bc) J(a,b,c)=3(a+bc)
令 u = b c u = bc u=bc , v = a + u v = a+u v=a+u , J = 3 v J = 3v J=3v
黑色为前向传播,红色为反向传播
Week 3 Shallow neutral networks
以下图所示的神经网络为例, [ m ] [m] [m]表示第m层网络中相关结点的数目
三个常用的激活函数
-
sigmoid 函数
a = σ ( z ) = 1 1 + e − z a = \sigma{(z)} = \frac{1}{1+e^{-z}} a=σ(z)=1+e−z1
导数:
d ( g ( z ) d z = 1 1 + e − z ( 1 − 1 1 + e − z ) = g ( z ) ( 1 − g ( z ) ) \frac{d(g(z)}{dz} = \frac{1}{1+e^{-z}}(1-\frac{1}{1+e^{-z}}) = g(z)(1-g(z)) dzd(g(z)=1+e−z1(1−1+e−z1)=g(z)(1−g(z))
g ′ ( z ) = g ( z ) ( 1 − g ( z ) ) = a ( 1 − a ) g'(z) = g(z)(1-g(z)) = a(1-a) g′(z)=g(z)(1−g(z))=a(1−a)
在 z z z特别大或者特别小的情况下,导数的梯度会特别小,最后接近0,使梯度下降速度过小
-
tanh函数
a = t a n h ( z ) = e z − e − z e z + e − z a = tanh(z) = \frac{e^z-e^{-z}}{e^z+e^{-z}} a=tanh(z)=ez+e−zez−e−z
导数:
d g ( z ) d z = 1 − ( t a n h ( z ) ) 2 \frac{dg(z)}{dz} = 1 - (tanh(z))^2 dzdg(z)=1−(tanh(z))2
值域在-1到1之间,数据均值更接近0而不是0.5
-
Relu函数
a = m a x ( 0 , z ) a = max(0,z) a=max(0,z)
导数:
g ′ ( x ) = { 0 z < 0 1 z > 0 u n d e f i n e d z = 0 g'(x)=\left\{ \begin{array}{cl} 0 & & {z < 0}\\ 1 & & {z > 0}\\ undefined & & {z = 0}\\ \end{array} \right. g′(x)=⎩⎨⎧01undefinedz<0z>0z=0
z是正值的情况下,导数恒等于1,当z是负值的情况下,导数恒等于0
sigmoid 函数:除了是一个二分类问题基本不会用
tanh函数:几乎适合所有的场合
Relu函数:最常用的默认函数,不知道用什么函数就用它Week 4 Deep neutral networks
输入的特征记作 x x x,但 x x x同样也是0层的激活函数后的结果 x = a [ 0 ] x = a^{[0]} x=a[0]
最后一层激活函数后的结果 a [ l ] a{[l]} a[l],也是这个神经网络所预测的输出结果下面对矩阵的维数进行讨论:
w w w的维度:(下一层的维数,前一层的维数) w [ l ] : ( n [ l ] , n l − 1 ] ) w^{[l]}:(n^{[l]},n^{l-1]}) w[l]:(n[l],nl−1])b b b的维度:(下一层的维数,1) b [ l ] : ( n [ l ] , 1 ) b^{[l]}:(n^{[l]},1) b[l]:(n[l],1)
z [ l ] , a [ l ] : ( n [ l ] , 1 ) z^{[l]},a^{[l]} : (n^{[l]},1) z[l],a[l]:(n[l],1)
对多个样本向量化后得到 z [ l ] z^{[l]} z[l]的维度:
z [ l ] : ( n [ l ] , m ) z^{[l]} : (n^{[l]},m) z[l]:(n[l],m)
深层的网络隐藏单元数量相对较少,隐藏层数目比较多
下面是神经网络的计算过程:
一些超参
学习率(Learning Rate): α \alpha α
梯度下降法循环的次数:iterations
隐藏层的数目:L
隐藏层的单元树木: n [ l ] n^{[l]} n[l] -
-
黄海广博士整理的吴恩达深度学习笔记,v5.44,746页
2018-09-18 13:38:54文档是黄海广博士针对吴恩达老师深度学习课程(deeplearning.ai)视频做的笔记,v5.44,746页。最后修改:2018-04-30。 -
Coursera吴恩达深度学习教程中文笔记
2020-10-26 20:56:09deeplearning_ai_books-master.zip Coursera吴恩达深度学习教程中文笔记,由中国海洋大学黄海广博士整理,仅供个人学习使用,github地址: https://github.com/fengdu78/deeplearning_ai_books -
吴恩达深度学习学习笔记
2021-12-01 10:54:07吴恩达教授的课可以在 1.Coursera(可以申请旁听免费) 2.DeepLearning AI(中国) 3.B站 ...这是吴恩达deep learning的编程作业(含quiz)和黄博士写的配套课本(笔记) 链接:https://pan.baidu.c -
吴恩达深度学习系列课程课件+作业+答案.rar
2019-05-16 23:30:09吴恩达教授在coursera的深度学习课程全五期的笔记、ppt、编程作业及答案。 其中的课程包括:1:神经网络和深度学习,2:改善深层神经网络:超参数调试、正则化以及优化,3:结构化机器学习项目,4:卷积神经网络,5:序列... -
【Deeplearning.ai 】吴恩达深度学习笔记及课后作业目录
2020-07-08 00:47:00吴恩达深度学习课程的课堂笔记以及课后作业 代码下载:https://github.com/douzujun/Deep-Learning-Coursera 课程1 - 神经网络和深度学习 周数 名称 类型 地址 week1 深度学习简介 测验 略 week2 神经网络... -
吴恩达老师深度学习笔记(中文版)
2018-10-23 16:00:13本文档是针对吴恩达老师深度学习课程(deeplearning.ai)视频做的笔记