吴恩达2022机器学习_第二部分高级学习算法笔记

时间:2022-09-26 22:55:15

1.需求预测

吴恩达2022机器学习_第二部分高级学习算法笔记
神经元 的作用是输入一个或几个数字,然后输出一个数字或者其他几个号码。(如图中的一个神经元里面就代表了神经元上边的公式,输入x,经过公式计算输出a的值)
神经网络 建立一个神经网络只需要取一堆这些神经元,把它们连接在一起或把它们放在一起。
吴恩达2022机器学习_第二部分高级学习算法笔记
注:一层是一组神经元(可以有一个或多个),让我们输入相同或相似的特征,然后输出几个数字在一起。最后一层是输出层,因为最终神经元的输出是神经网络,在神经网络术语中预测的输出概率。我们还将把可负担性意识和感知质量称为激活。
吴恩达2022机器学习_第二部分高级学习算法笔记

2.机器学习例子:图像识别过程:

输入图片,输出图片中人的身份。输入图像x被输入到这一层神经元,这是第一个隐藏层,然后提取一些特征。第一层隐藏层的输出被传送到第二个隐藏层。输出被送到第三层。最后到达输出层。估计是某个特定的人。其中第一层神经元在寻找垂直线或垂直边缘,另一个神经元寻找一条定向线或定向边缘,第三个神经元在这个方向寻找一条线,以此类推。

3.如何构建一层神经元

吴恩达2022机器学习_第二部分高级学习算法笔记
第一个隐藏层放大来看
吴恩达2022机器学习_第二部分高级学习算法笔记
第二个输出层放大来看
如果你想要一个二进制预测(1或者是0),对阈值大小进行判断
总结:神经网络的工作原理:每一层都输入一个数字向量,并对其应用一系列逻辑回归单元,然后计算另一个数字向量,然后从一层传递到另一层,直到最后的输出层计算出它对神经网络的预测,然后你可以在零点五的阈值,或者不提出最终的预测。

4.更复杂的神经网络

当我们说一个神经网络有四个层时,包括所有的隐藏层和输出层,不包括输入层,输入层为第0层。
吴恩达2022机器学习_第二部分高级学习算法笔记
第三次要做什么计算才能从二层变成三层?如果它有三个神经元或者我们称为三个隐藏单位。
吴恩达2022机器学习_第二部分高级学习算法笔记
计算神经网络中任意层的激活值: 对于任意层l和任意单位j,g也被称为激活函数(因为g输出激活值)如下图所示:
吴恩达2022机器学习_第二部分高级学习算法笔记

5.推理:做出预测(向前传播) 手写数字识别例子:

(让你的神经网络做出推断或预测)为了简单起见,我们区分手写数字0和1,所以这只是一个二进制分类问题,我们要输入图像并分类。把那个图像放到88的网格或矩阵中,四个像素强度值,25表示一个明亮的白色像素,零表示一个黑色像素,不同的数字是不同的在这黑白之间的黑色阴影,如下图所示:
吴恩达2022机器学习_第二部分高级学习算法笔记
这里我们给出四个输入特性,我们将使用一个带有两个隐藏层的神经网络,第一层有25个神经元或25个单位,第二层有15个神经元或15个单位,最后输出层输出几率是多少
吴恩达2022机器学习_第二部分高级学习算法笔记
我们通过一系列计算:我们需要建立的神经网络从输入x(这个8
8或64的矩阵预测概率的四个数字),第一个计算是从x到a1(这就是第一层或隐藏的第一层所做的),它执行上标方括号的计算,如下图所示:
吴恩达2022机器学习_第二部分高级学习算法笔记
同理,第二层,因为有15个单元,所以下标是1-15,如下图所示:
吴恩达2022机器学习_第二部分高级学习算法笔记
最后一步是计算a3,用相似的计算方法,输出层只有一个单元,所以只有一个输出,所以a3是一个标量。最后你可以选择一个阈值0.5 得出一个二进制分类标签。
吴恩达2022机器学习_第二部分高级学习算法笔记
所以,计算顺序是首先取x,在计算a1,再计算a2,再计算a3,a3也是神经网络的输出,所以a3可以写成f(x)。
因此记住: 当我们学习线性回归和逻辑回归时,我们用x的f表示线性回归或logistic回归的输出,所以我们也可以用x 的f来表示由神经网络计算的函数是x 的函数。因为计算是从左到右的,从x计算a1,a2,a3,这种算法也叫正向传播(因为你传播神经元的激活是从左到右沿着向前的方向进行计算的),反之为反向传播。

6.tensorflow在代码中实现推理

同一个算法可以应用于不同的应用。这里拿烤咖啡豆来说,影响因素可以简化为烤的时间长短和烤的温度,
吴恩达2022机器学习_第二部分高级学习算法笔记
我们把x设为两个数字的数组,输入的特征是200摄氏度和17分钟,这一层等于密度单位。layer_1创造了一个隐藏的神经元层,有三个隐藏的单位并将其作为激活功能,Dance只是这个层的名字,有三个单元用sigmoid函数,最后计算激活值a1。layer_1将是一个由三个数字组成的列表,因为第一层有三个单元
吴恩达2022机器学习_第二部分高级学习算法笔记
第二层有一个单元(units=1),用sigmoid函数,你可以用layer_2函数来计算有a1到a2的值。
吴恩达2022机器学习_第二部分高级学习算法笔记
你也可以设置阈值0.5来判断咖啡豆的好坏。
吴恩达2022机器学习_第二部分高级学习算法笔记
这就是神经网络中使用tensorflow进行推理的方法。
对于如何加载tensorflow库以及如何加载神经网络的参数w和b,这些是传播的关键步骤,之后再说。
再回到手写数字识别问题 ,x是像素强度值的列表,所以x等于这个像素强度值列表中的一个数字数组,然后初始化并执行前一步的传播层layer_1,units=25也就是25个单元 用sigmoid函数,然后计算一个a1等于layer_1的函数应用于x来构建并通过第二层进行推理
吴恩达2022机器学习_第二部分高级学习算法笔记
同样地i,可以按照以下方式设置第二层,计算一个a2
吴恩达2022机器学习_第二部分高级学习算法笔记最后就是第三层,也就是最后一层,输出层
吴恩达2022机器学习_第二部分高级学习算法笔记
最后可以设置成二进制预测
吴恩达2022机器学习_第二部分高级学习算法笔记

7.TensorFlow中的数据如何表示

TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表。
(当你实现新的神经网络时,你可以用一个一致的框架来考虑如何表示你的数据)
这个例子还是咖啡豆。并且你有一个如下所示数据集:
吴恩达2022机器学习_第二部分高级学习算法笔记
这里需要明确numpy如何存储向量和矩阵:每一行是一个中括号,总的又在一个中括号里。
吴恩达2022机器学习_第二部分高级学习算法笔记
回到咖啡豆的例子。数据集的表示如下:
吴恩达2022机器学习_第二部分高级学习算法笔记
用于在神经网络中进行传播或推理的代码
吴恩达2022机器学习_第二部分高级学习算法笔记
tensor是tensorflow创建的一种数据类型,用于在矩阵上充分存储和执行计算,可看作表示矩阵的一种方法。(数组)
事实上,如果想取一个a1并把他转回一个tensor的数组,可以用numpy,它将获取相同的数据 并以数字数组的形式返回,而不是以矩阵的形式。

8.构建一个神经网络

在tensorflow中建立一个神经网络:
原先的方法是一次一层的计算,向前推进:
吴恩达2022机器学习_第二部分高级学习算法笔记
tensorflow还有一种不同的方式来实现向前推进:
向之前一样,先建立第一层和第二层,但现在你不用自己手动获取数据并将其传递到第一层 然后激活到第一层 再传递到第二层,相反,我们可以告诉tensorflow我们希望它采取第一层和第二层,并将它们串在一起,形成一个神经网络,这就是tensorflow中Sequential函数的作用。
吴恩达2022机器学习_第二部分高级学习算法笔记
用tensorflow重做数字识别: 一二三层,然后告诉tensorflow把这些层串成一个神经网络,可以将数据存储在一个矩阵中并运行编译函数和拟合函数,最后进行推断和预测。你可以在x_new上使用模型预测。吴恩达2022机器学习_第二部分高级学习算法笔记
可以使代码更紧凑:
吴恩达2022机器学习_第二部分高级学习算法笔记
告诉tensorflow为我创建一个模型,按顺序将这三层串在一起,剩下的代码和以前一样。
吴恩达2022机器学习_第二部分高级学习算法笔记
这就是在tensorflow中建立神经网络的方法。

9.在一个单层中的向前传播

吴恩达2022机器学习_第二部分高级学习算法笔记
吴恩达2022机器学习_第二部分高级学习算法笔记

10.向前传播的一般实现

吴恩达2022机器学习_第二部分高级学习算法笔记