向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)

目录

一.用代码实现推理

二.Tensorflow中数据形式

三.搭建一个神经网络

四.单个网络层上的前向传播

五.前向传播的一般实现

六.强人工智能

七.矩阵乘法(选学)


一.用代码实现推理

吴恩达老师以烤咖啡豆为例,又为我们引入了一个例子(不得不说吴老师真的蛮幽默的hhhh)

烤咖啡豆要控制两个变量,分别是温度和烘烤时间。

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第1张图片

烘烤温度过低或者烘烤时间不够都得不到好的咖啡豆,likewise,温度过高或者烘烤时间过长也得不到好的咖啡豆,对应到图中,红叉就是好豆子,蓝圈就不是好豆子。

所以温度和时间就是两个参数值,给温度和烘烤时常赋初值分别为200和17。

下图是模型的图示以及左下角是tensorflow的实现代码,Dense就是神经网络的一层,其中参数units是该层神经元的个数,activation是用哪个激活函数,返回值是一个函数(是的,函数也可以作为一个返回值),然后在该函数下传入输入值,即可逐步得到最后的预测概率,结合之前学的东西,真的很好理解!

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第2张图片

让我们再看一下手写体识别的例子(也是分类问题)

如下图,输入层是像素值的二维数组(矩阵),

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第3张图片

神经网络这块可以结合着B站博主3Blue1Brown的这块的视频(也是以识别手写体为例)来看,讲得很细致且生动!

可以把神经元理解为一个函数,整个网络也是一个函数,然后这个函数有很多参数(连接神经元之间的边的权重以及当前层所有神经元到下一层的某个神经元计算时需要的一个偏置值),而且这个函数有输入也有输出,咱们需要训练以获得最佳的参数值。

之前提到的神经网络识别图像时,不同层之间到底做了什么,之前说第二层先识别图中的短边,然后下一层再识别各个部位,然后下一层再把各个部位组合成一张脸。但其实不然,我们让代价函数最小到底是对应上了图像中的某些结构呢,还是只是单纯的死记硬背呢?

也就是记住了整个正确分类的数据集(哈哈哈开玩笑的,但是中间的那些隐藏层到底干了啥现在确实说不清楚)

在网上有看到一种说法DL是特征提取。特征提取到处可见,比如机器学习就是人工按照需要提取特征,并做特征分类。而比较流行的深度学习方法,实质也提取特征,只不过是自动提取的,并对特征迭代计算找出最佳特征分布。

二.Tensorflow中数据形式

numpy矩阵示例:

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第4张图片

注意下图的两个蓝框括起来的部分,

x=np.array([[200,17]])和x=np.array([200,17])有什么区别吗?第一点区别就是前者是二维矩阵,后者是一个一维的向量,可以说是个一维数组。第二点区别就是前者是Tensorflow中数据的表示形式,而后者是numpy中的表示形式。表示成一个矩阵在Tensorflow中可以提高运算效率。

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第5张图片

tensor是Tensorflow团队创建的一种数据类型,用于有效地存储和执行矩阵计算。

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第6张图片

如果你想把a1转换成numpy类型的数据,那么可以用上图那个函数,a1.numpy()

三.搭建一个神经网络

下图是一个搭建神经网络的流程,一般是搭建几个层,然后将这几个层用Sequential函数在一起,这样搭建起一个模型,然后将模型进行编译,再传入初始训练值进行数据的拟合,当模型训练好了之后,就可以传入测试集的数据来进行预测了。

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第7张图片

然后我们为识别手写体的例子再进行代码的重建

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第8张图片

每节课结束之后都要把吴老师的课后作业跑一跑, 只有实际跑一跑代码,才会有更多的收获!

强烈建议大家把课后代码跑一跑,这样才能理解得更深刻,下面贴一下我对于手写数字识别(0或1)的理解,最好把数据带到代码中,自己一步步推算一下,理解得不要太透彻!

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第9张图片

 

四.单个网络层上的前向传播

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第10张图片

五.前向传播的一般实现

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第11张图片

六.强人工智能

人工智能可分为两类,一类是狭义上的,比如我们常说的自动驾驶,推荐系统等等那些应用;另一类是广义上的人工智能(AGI),可以看到下图中的英文,do anything a human can do,显然,这可能还很遥远。

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第12张图片

为什么很遥远呢?原因一是我们构建的神经元(逻辑回归单元)比起我们大脑的任何一个神经元都很简单,原因二是直到今日,我们几乎不知道大脑是如何工作的,还谈何构建一个模拟我们大脑运作的模型了呢。

七.矩阵乘法(选学)

点积(向量积)

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第13张图片

矩阵乘法就不多说了吧,虽然距离考研已经过去快一年了,但是简单的一些规则还是有印象的。

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第14张图片

代码实现:

向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)_第15张图片

用numpy的matmul函数实现矩阵乘法,效率很高比for循环,也可以用图中的另一种写法

Z=AT@W,这和Z=np.matmul(AT,W)是等效的。


numpy的广播机制可以在第二课第一周的第九个实验文件中查看。

你可能感兴趣的:(#,机器学习,神经网络,Tensorflow,前向传播,矩阵乘法)