深度学习-吴恩达-笔记-1-深度学习引言

本文介绍了神经网络的基本概念,包括ReLU激活函数的作用及其在房价预测中的应用,并探讨了神经网络如何进行监督学习。此外,还分析了深度学习兴起的原因,包括数据量的增长、硬件性能的提升及算法创新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

什么是神经网络

神经网络的监督学习

为什么深度学习会兴起


【此为本人学习吴恩达的深度学习课程的笔记记录,有错误请指出!】

什么是神经网络


让我们从一个房价预测的例子开始讲起,如根据房子面积来预测房屋价格。

如果你对线性回归很熟悉, 可以用一条直线来拟合这些数据。但是房屋的价格永远不会是负数的,因此,可以把价格为负数的部分变成零,让它最终在零结束。这条粗的蓝线最终的预测函数,用于根据房屋面积预测价格。

在有关神经网络的文献中,你经常看得到这个函数。从趋近于零开始,然后变成一条直线。这个函数被称作 ReLU 激活函数,它的全称是 Rectified Linear Unit。 rectify(修正)可以理解成 𝑚𝑎𝑥(0, 𝑥),这也成为蓝线的函数的原因。

如果这是一个单神经元网络,不管规模大小,它正是通过把这些单个神经元叠加在一起来形成。如果把这些神经元想象成单独的乐高积木,就可以通过搭积木来完成一个更大的神经网络。

 

神经网络的监督学习


神经网络是一种监督学习算法。

我们举一些其它的例子,来说明神经网络已经被高效应用到其它地方。

在不同的应用领域,神经网络的结构各不相同,左图是标准的神经网络,右图是卷积神经网络:

   

递归神经网络(RNN)非常适合一维序列,数据可能是一个时间组成部分,一般为非结构化数据(如:音频、图像、文本等)。

神经网络对结构化数据和非结构化数据都适用。

 

为什么深度学习会兴起


深度学习和神经网络之前的基础技术理念已经存在大概几十年了,为什么它们现在才突然流行起来呢?

如下图,横轴是数据量,纵轴是传统机器学习算法性能(准确率等):

随着数据量规模的增大,算法性能先是上升,之后就趋向平缓。传统机器学习算法无法适应大规模数据,最终导致算法性能无法上升到更高的阶段。

不同规模的神经网络对于不同规模的数据,对应的算法性能如下:

小型神经网络-小规模数据(黄线)

中型神经网络-中规模数据(蓝线)

大型神经网络-大规模数据(绿线)

可以看出,想要神经网络获得更好的性能,要么训练一个更大的神经网络,要么投入更多的数据。

在较小的训练集中,各种算法的性能差别不是很明显,所以,如果没有大量的训练集,那么性能效果取决于你的特征工程能力。

因此,近年来神经网络的兴起原因如下:

1、数据量的爆发式增长,如:互联网、物联网等应用的出现

2、硬件的性能大大提高,如:CPU、GPU、存储等

3、算法的极大创新,如: 神经网络方面的一个巨大突破是从 sigmoid 函数转换到一个 ReLU函数:

sigmoid 函数的梯度会接近零, 参数会更新的很慢,所以学习的速度会变得非常缓慢。

ReLU(修正线性单元)函数的梯度对于所有输入的负值都是零, 也就是这条线的斜率在左边是零。

仅仅通过将 Sigmod 函数转换成 ReLU 函数,便能够使得做梯度下降算法运行的更快,这就是一个或许相对比较简单的算法创新的例子。

这些原因使得神经网络的实验人员和有关项目的研究人员在深度学习的工作中迭代的更快,以便快速验证自己的想法和得到实验结果:

 

### 吴恩达深度学习课程笔记与资料总结 吴恩达深度学习课程在Coursera平台上提供了全面的学习体验,涵盖了从基础到高级的深度学习知识。以下是根据引用内容和专业知识整理出的课程笔记和资料汇总[^2]。 #### 1. 神经网络和深度学习 这门课是整个系列的基础部分,主要介绍了深度学习的基本概念和神经网络的工作原理。 - **第一周**:深度学习引言,包括机器学习的定义、监督学习、无监督学习、半监督学习和强化学习的概念[^3]。 - **第二周**:神经网络的编程基础,讲解了如何使用Python和NumPy实现简单的神经网络[^4]。 - **第三周**:浅层神经网络,深入探讨了激活函数的选择、梯度下降算法以及正向传播和反向传播的过程[^4]。 - **第四周**:深层神经网络,讨论了多层神经网络的结构设计、初始化方法以及优化策略。 #### 2. 改善深层神经网络 这门课专注于提高模型性能的技术,包括超参数调试、正则化和优化方法。 - **第一周**:深度学习的实用层面,介绍了批量归一化(Batch Normalization)、Dropout等技术的应用[^4]。 - **第二周**:优化算法,详细讲解了动量法(Momentum)、RMSprop和Adam等优化算法的原理及其优缺点[^4]。 - **第三周**:超参数调试、Batch正则化和程序框架,分享了如何系统地选择超参数以及使用TensorFlow或Keras等框架进行开发。 #### 3. 结构化机器学习项目 该课程帮助学习者掌握如何高效地组织和执行机器学习项目。 - **第一周**:机器学习策略(1),讲解了如何设定目标、选择数据集以及评估模型性能。 - **第二周**:机器学习策略(2),进一步探讨了偏差-方差权衡、过拟合和欠拟合问题的解决方案。 #### 4. 卷积神经网络 本课程重点介绍了卷积神经网络(CNN)及其在图像识别中的应用。 - **第一周**:卷积神经网络,讲解了卷积层、池化层和全连接层的基本概念及其实现方法[^4]。 - **第二周**:深度卷积网络:实例探究,分析了ResNet、Inception等经典架构的设计思想。 - **第三周**:目标检测,介绍了YOLO和SSD等目标检测算法的工作机制。 - **第四周**:特殊应用:人脸识别和神经风格转换,展示了深度学习在实际场景中的创新应用。 #### 5. 序列模型 最后这门课聚焦于序列数据处理,特别是自然语言处理领域。 - **第一周**:循环序列模型,讲解了RNN、LSTM和GRU等模型的结构特点及其适用场景[^4]。 - **第二周**:自然语言处理与词嵌入,介绍了词向量表示方法以及它们在文本分类、情感分析等任务中的作用[^4]。 - **第三周**:序列模型和注意力机制,深入探讨了注意力机制的原理及其在翻译、语音识别等任务中的应用[^4]。 ```python # 示例代码:简单神经网络实现 import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) def initialize_parameters(n_x, n_h, n_y): W1 = np.random.randn(n_h, n_x) * 0.01 b1 = np.zeros((n_h, 1)) W2 = np.random.randn(n_y, n_h) * 0.01 b2 = np.zeros((n_y, 1)) parameters = {"W1": W1, "b1": b1, "W2": W2, "b2": b2} return parameters def forward_propagation(X, parameters): W1 = parameters["W1"] b1 = parameters["b1"] W2 = parameters["W2"] b2 = parameters["b2"] Z1 = np.dot(W1, X) + b1 A1 = np.tanh(Z1) Z2 = np.dot(W2, A1) + b2 A2 = sigmoid(Z2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值