关于神经网络的一些思考与感受 原创
“ 神经网络模型并不是通用模型,不同的问题需要设计不同的神经网络模型,千万不要想着一个模型打天下 ”
神经网络作为当前人工智能领域最炙手可热的技术,其技术原理也相对比较复杂;而在学习神经网络的过程中也面临着很多问题和感受,因此这里就简单记录一下。
关于神经网络
从本质上来说,所谓的神经网络就是一个模拟人类大脑的数学模型;而为了解决不同的问题,技术专家们也设计了多种不同的神经网络模型,比如RNN,CNN以及Transformer等模型,以及基于这些模型的变种。
不同的神经网络模型擅长解决不同领域的具体问题;比如CNN——卷积神经网络就比较适合处理图像任务;Transformer擅长处理自然语言问题。
当然,受限于目前的技术问题,还没有一种通用的神经网络模型能够解决所有问题;因此,根据不同的任务就只能设计不同的神经网络模型;以上三种神经网络架构只是目前市面上比较常见的,比较通用的神经网络架构;并且在处理具体任务时,不同的网络架构也可以嵌套使用。
其次,从技术的实现角度来说,目前市面上有两大技术框架;一个是谷歌公司开发的Tensorflow框架,以及Meta公司开发的PyTorch框架。
当然,神经网络最重要的是其实现思想,所以使用什么语言,以及什么技术都可以根据自己的喜好进行选择;而不论是Tensorflow还是pyTorch框架,只是方便技术人员的开发;使得技术人员不需要所有东西都从0开始。简单来说就是,你用这两个框架也可以,不用这两个框架也可以。
神经网络的实现流程:
要想设计和实现一个能够解决具体问题的神经网络模型,需要经过以下几个步骤:
- 明确任务目标,即你想设计一个具备什么功能的神经网络模型
- 构建模型 即使用什么架构,以及具体的神经网络结构,就是神经网络的具体实现
- 数据准备 收集任务目标所需要的训练数据集和测试数据集等
- 模型训练 验证与测试使用等
神经网络的实现比较复杂,不但要设计神经网络的输入输出,还要设计神经网络有哪些层,每层的功能实现是什么样的;并且,由于神经网络主要以向量格式为主,因此还需要对训练数据进行处理,比如构建词汇表,分词,向量化等操作。
而一个神经网络的好坏,一是看神经网络模型的设计;二就是训练数据的质量;因此,要想训练一个神经网络就需要收集大量的高质量的训练数据。而数据收集到之后还不能直接使用,还需要经过清洗,格式化等操作。
目前神经网络模型除了受限于算力问题之外,还一个非常严重的问题就是训练数据的问题;传说openAI在训练GPT-4时已经把能找到的所有数据都用完了。
受限于自己的基础问题,虽然从网上找了一些博客手动实现一个神经网络模型;但到现在也没想明白,为什么这些数据在神经网络里七颠八倒之后,就能够学习到数据的规律。
总之,学习神经网络最重要的不是看理论,最好的方式就是自己手动实践,根据自己的实际问题,去设计和实现一个神经网络;这样你就能明白神经网络到底是怎么运作的。
在使用神经网络解决实际问题的过程中,切记不可指望一个神经网络模型就能套用到所有问题中,那是不可能的;基本上每个问题都需要设计一个不同的神经网络;区别可能就是有些相似度比较高的问题,可能在现有的神经网络模型上进行适当的调整与修改。
本文转载自公众号AI探索时代 作者:DFires