吴恩达机器学习-第二课-第一周
吴恩达神经网络
学习视频参考b站:吴恩达机器学习
本文是参照视频学习的随手笔记,便于后续回顾。
神经网络(Neural Networks)
发展历程

神经元和大脑(Neurons and the brain)
多个树突接受信号,通过轴突把信号传给下一个神经元
通过软件模仿大脑工作,但大脑实际怎么工作的人们并不清楚,只是模仿

神经网络存在几十年了,因为近些年数据量激增所以发展起来了

需求预测(Demand Prediction)
T桖销售模型
只有一个价格输入,每一层的输出由a来表示

多个输入,输入层->隐藏层(可能有很多层)->输出层
可能一个神经元有多个输入,判断哪些输入是不必要的,降低其影响

多个隐藏层示例,你需要决定有多少层隐藏层和每一层有多少神经元(后面会讲)

图像认知示例(Recognizing Images)
图像在计算机中的储存

人像认知
早些层可能在认识某些线条,中间层可能在认识某些器官像是眼睛、鼻子,后面层可能在认识不同脸部
每一层认识的窗口越来越大

车辆认知

神经网络层的工作原理(Neural network layer)
细节与符号表示
上标数字表示层,下标数字表示第几个神经元

前一层的输出是后一层的输入

最后一个输出通过条件判断,输出对应标签

更复杂的神经网络

Question

Answer:one
输入向量x又可以称为a0(上标0表示第0层)

神经网络向前传播(Forward Propagation)
计算a1,因为第一层有25个神经元,所以有25个输出

计算a2,因为第一层有15个神经元,所以有15个输出

计算a3,因为第一层有1个神经元,所以有1个输出,最终可以通过a3的值判断,因此输出不同的标签

TensorFlow
如何用代码实现推理(use TensorFlow)
烤咖啡豆模型
不同温度、与持续时间控制咖啡豆是否烤的好

通过代码实现:
Dense表示第几层,units表示神经元数,activation表示激活函数,最后用a来接收每一层输出

数字分类模型代码实现

TensorFlow中的数据表示方式(与numpy相互转换)
numpy中的记录
两个方框表示矩阵(二维数组),一个方框表示一维数组

方框中的方框表示第几行,逗号分隔第几行第几个元素

TensorFlow中是用矩阵表示数据的

代码中实际得到的向量是用矩阵表示的
nsorFlow和NumPy数据表示不同,但可以用Tensor或numpy方法相互转换


搭建一个神经网络
简单版本

现在可以通过Sequential方法将多个层构建成一个神经网络model
然后通过compile编译,fit拟合来训练模型(之后会讲),之后通过predict预测输入值所对应的输出

数字分类模型示例

可以直接把每层的定义放入Sequential函数中,不用单独定义

单个网络层上的向前传播

向前传播的一般实现(NumPy)
W的列数是3,所以units为3,然后通过下面的循环计算输出值a

Is there a path to AGI?
AI的分类(ANI or AGI)


大脑的同一区域通过不同的输入学会做不同的事(如何通过算法实现?)

神经网络为何如此高效
循环与向量化对比
通过matmul函数实现矩阵乘法,比循环更高效

矩阵乘法(线代基础---有基础直接过)
点积:一一对应相乘,然后加起来
转置:矩阵行列互换
矩阵乘法规则:有矩阵A,B,求A×B,A的列数与B的行数要相等,得到A的行数×B的列数的矩阵





矩阵乘法代码实现
使用matmal函数和@效果一样,一般使用前者

向量化

Summary
本周学习内容如下:
1.神经网络的发展历程,神经元和大脑,神经网络模型
2.图像认知示例
3.神经网络的工作原理,神经网络的向前传播
4.如何用代码实现推理
5.TensorFlow和NumPy对于数据的不同表示方式
6.搭建一个神经网络,向前传播的实现
7.AI的分类,神经网络为何如此高效,矩阵乘法与代码实现

浙公网安备 33010602011771号