《python神经网络读书笔记》

发布时间 2024-01-05 18:34:43作者: 心渐渐失空

感想:

人工智能 是一门古老的学科,意思是人为的创造出和人类相似的智能体。在很多科幻影视作品中都有描述,甚至有的影视作品中不是使用计算机来实现人工智能。但是实际上这门学科在21世纪之前一直没什么进展。20世纪时,这门学科的主要研究方向是通过写一些强制判断逻辑来模拟智能体。实现出来的智能体基本都属于人工智障。主要原因是这些判断是写死的,每个输入都要写一个输出,相当于枚举每一个输入,明显 人为做这个枚举工作总是会做漏了,或者很多地方逻辑冲突了。

有心栽花花不成,无心插柳柳成阴。虽然人工智能没啥进展,但是电脑游戏却一直在高速发展,人们玩的游戏越来越大,越来越逼真,这促进了GPU的发展。GPU的 浮点数计算能力 越来越强,GPU公司还推出了CUDA,上游软件编程人员可以调用CUDA接口来控制GPU完成更多的事情。这似乎和人工智能没啥关系,即使是游戏里的npc角色也是通过硬编码枚举的方式实现的简单智能体,算不上正真能和人类智能相提并论的智能体。人工智能在20世纪的研究和发展方向,更像是游戏里的npc,只是一个固定的、程序员写死的逻辑,这种方式实现的人工智能被称为 符号主义人工智能。

直到21实际初,人工智能的一个细分领域--机器学习 却被GPU催化和促进了。机器学习作为人工智能的一个细分领域,一直不起眼,机器学习的主流思想是写一个程序,给这个程序输入一些数据,然后让程序输出这个数据中的规则。机器从数据中学习规则,就叫做机器学习,当然这是一个古老的学科,也是发展慢,不起眼。21世纪前学的人少,因为没啥可学的。但是机器学习为人工智能提供了一个新颖的思路。

 得益于数学中线性代数的发展,机器学习这个细分学科下面,居然又出现了一个更细分的学科,叫做深度学习。它使用一个n维数字矩阵来表示规则,将数据输入转化成数字矩阵,与表示规则的数据矩阵做矩阵运算得到结果,然后调整这个代表规则的数字矩阵中的数据,使得到的结果更加接近真实的结果。这个代表规则的矩阵就叫做 层(layer),输入的数据可以连续和多个层做运算,由于可以有任意多的层,3层就是深度=3,5层就是深度=5,所以被叫做深度学习。额,这个名字的确会被人误认为是机器在专心(深度)学习,其实不是,他只是表示层(深度)学习。。。这也是一个冷门学科,他的实际用途不大。也是作为一种创新思路而长久存在。毕竟这些代表规则的层里面的大量数字矩阵的值,要一个个调整,使输入得到的结果和输出对应上。是一个不小的工作量,有这功夫,还不如去做符号主义的人工智能。

总结下来就是:人工智能是一个学科,在21世纪前,比起计算机、核能这些学科,不太起眼。但是这门学科下面积累了很多创新型的想法。其中包括机器学习提出的让程序从数据中得到规则,包括了深度学习提出的无厘头的想法。

细想深度学习学科的想法,其实它提供了一个重要的思路:把人类能看的文字、图片、声音等等数据,统统映射成n维数字矩阵。把智能体要学习的规则,也使用n维数字矩阵来表示。这完全和符号主义背道而驰。不管是输入、规则还是输出,都是数字矩阵。它是机器学习的实践者,尝试用数字矩阵来表示一切信息(数据、规则)。虽然听起来异想天开。

直到有人把深度学习和反馈调节算法结合起来,让深度学习中的这个神经网络(多层数字矩阵),能够根据输出和函数自动调节矩阵内的所有数字,使这些代表规则的矩阵数字随着大量数据的输入,自动变得越来越接近真实世界的规则(数据中隐藏的规则)。

 这是一个很大的进步,使深度学习脱颖而出,一举成为人工智能里最热门的学科。为什么呢?因为它解放了人类,不需要人类手工去调节代表规则的大量数字,而是通过线性代数求导自动调节代表规则的数字(模型参数)。得益于游戏和GPU的高速发展,这些调整参数的活全都交给计算机和GPU完成,能快速完成规则参数的调节(也叫做学习),得到好用的模型。再加上互联网上数据量的膨胀,使深度学习领域有用不完的数据可以用来调节神经网络模型中的规则数字。这就是2010年左右发生的突破和进展。

 有了GPU的快速计算能力,互联网上海量人类产生的数据,以及大量研究人员2010年以后涌入深度学习领域去开创出更多创新的想法和算法。使得深度学习中的神经网络模型层出不穷,智能体也变得越来越接近人类,甚至在大量工作上频繁超越人类。

靠的就是1.有数据(用来调整规则);2.有计算能力(快速完成规则调整工作);3.有创新想法(由于突然火爆了,大量资金涌入这个领域,研究和试验也变多了)。

另外很多大忽悠说深度学习的神经网络模型是参考人脑神经元来实现的,简直是瞎说。它们两者虽然原理有一些相似之处,但是并不是前者参考后者。就像松花江和松花蛋的关系。他们之间完全没有联系,只是有一些相似之处。

对于神经网络模型,它更应该解释为数学在计算机上的实现。它将现实世界中的人类信息都编码成计算机中的 文字、图片、音频、视频,再把这些信息都映射层线性代数数字矩阵,然后利用梯度下降算法,做函数求导求极值,不断调整和优化规则数字。把现实世界中的规则映射到大量矩阵中。一切皆数字,皆可计算。

现在还处于机器学习较早期的阶段,互联网上的数据散乱无章,需要人工处理成合理的数字矩阵表示,大量用于调节神经网络模型的算法需要研究人员去创新、发现和尝试。随着机器学习的蓬勃发展,从简单的数据分类,到卷积神经网络做图像识别实现人脸识别指纹识别,到循环神经网络做语言、规律的学习总结,到GAN能从卷积神经网络中提取出图像特征并应用于其他图像,到海量数据训练的超多参数的大语言模型爆火。神经网络模型中的参数越来越能表示真实世界的规则,真实世界的各种信息越来越具象成数学、计算机中的数字。机器学习从早期的啥也干不了,到能总结出数据中的规律,再到能自己生成一些创新。未来三五十年内一定会在全方位超越人类,到时人类不再需要投入机器学习的研究,而是神经网络模型自我进化,就像《复联》中钢铁侠创造的人工智能一样,除去电影中的人工智能带有一些影视需要的特色,智力能力应该是和深度学习相当的。

至于人类的智力能力会在50年内全面被人工智能超越这件事。也没什么需要担心的,就像20世纪发明核弹前夕,人类具备了毁灭地球的能力,21世纪不也好好活着。只是在人工智能发达的未来,人类对自己的智力需求可以大量托管给人工智能,但还需要保持人类的意识。意识和智能不同。人工智能会在智能方面超越人类,但意识是人工智能不具备的。人类经过上百万年的生物进化,是哺乳动物,会冷、会热、会饿、会生病、会恐惧、会死亡,这些都是人类自发的,而人工智能不会。人工智能是从人类的数据而来,即使人工智能创造出来的新信息、新知识也脱离了人类那些自发的感受。人类未来更应该关注的 是人类社会应该往哪个方向发展,人工智呢只会作为工具而存在,让人类能实现自己的发展方向。

书籍正文内容:

第一章:科普性介绍,和我上面写的内容类似。

第二章:神经网络中最重要的一些数学基础,主要就是线性代数(如何用数字矩阵表示文字、图片、视频等信息)和梯度下降算法(通过数学求导优化参数)

第三章:使用python实操神经网络:CUDA对GPU做了封装,BLAS对CPU做了封装;tensorFlow对神经网络领域的各种数学运算和模型做了封装,将神经网络模型的训练和运行等事情分发到各个电脑上调用CUDA来完成;python keras库再对tensorFlow做一层用户界面封装,使开发人员能够使用简单的python代码就能完成神经网络模型的训练和运算。看到第三章我已经激动不已了。

如果懒得在自己电脑上安装这套开发环境,那可以浏览器登录:https://colab.research.google.com/drive,这是google的一个网站,你可以直接在上面写代码然后点击运行,他会用后台的GPU给你做训练并输出结果。它还集成了GPT,你可以写中文”帮我用keras库实现一个简单的卷积神经网络并使用共有数据训练它“,他就自动给你生成代码,例如:

 第四章:介绍了目前神经网络研究人员的日常工作,包括:1.评估模型、2.预处理数据(也叫特征工程,将拿到的数据合理的处理成数字矩阵)、3.训练模型时关注拟合和过拟合(模型参数训练不足或者训练过度)4.从0开始训练一个模型的步骤和每个步骤的注意点。

第一部分一共就这4章,分别介绍了人工智能科普知识、数学科普知识、人工智能领域的开发工具科普知识、人工智能从业的科普知识。(现在深度学习基本代表了人工智能)

第五章:卷积神经网络:卷积层的原理,如何构建和训练卷积神经网络。人脸识别支付、手机指纹识别、停车场车牌号识别、警察局监控视频分析等应用就是卷积神经网络的落地应用。

第六章:循环神经网络:循环层的原理,如何构建和训练循环神经网络。机票价格预测、天气预测、股票分析预测、人工智能客服、语言模型(类似chatGPT)等应用就是循环神经网络的落地应用。

第七章:keras库的高级用法:1.使用函数式API构建复杂架构的模型,2.使用模型回调函数观察模型的训练过程并及时调整训练策略,tensorboard利用回调函数实现训练过程和模型可视化;3.让模型性能发挥到极值的一些实用的理论方法

第八章:生成式深度学习,该模型能自主生成一些创新内容,chatGPT和GAN也属于生成式深度学习模型,能够让模型帮忙修改图片内容或者将图片的风格、内容提取出来(因为风格和内容都是数字)(市面上有很多图片处理APP都是这类模型的落地应用),能够让模型输出一些新生成的诗词歌赋。这是一个最近几年才发现的点,就是人工智能能创造出新内容。或者是从模型中提取出一些特征数据来单独使用。像chatGPT如此厉害的文字生成能力,也是得益于近几年把文字合理的映射成数字矩阵这件事不再是人工做的,而是通过训练模型来完成的映射。使文字映射成的数字矩阵更加合理。这都是一些最近几年的新进展,没有什么知识体系,都是一群研究人员在那不停的提出新想法,然后尝试,然后发现好的东西,然后把这些东西总结和研究清楚公布出来的。

第九章:总结回顾前8章的内容,并简单聊了神经网络的未来。

附录:A.在本地安装keras开发环境;B.使用aws云服务安装keras开发环境;

题外话:1.本书作者是keras库的作者。2.本书作者多次参与了机器学习大赛,是机器学习的一线研究人员。

keras官方文档:https://keras.io/api/

书中涉及的所有代码(涵盖了各种类型的神经网络模型例子):https://github.com/fchollet/deep-learning-with-python-notebooks

人工智能竞赛平台:https://www.kaggle.com/