神经网络理论与技术学习以及工具 原创
“ 为什么数据在神经网络模型中经过数学变换,就能被学习?”
关于神经网络技术有两个大的方向,一个是搞应用,另一个是搞技术;当然这里所说的应用并不是指完全脱离技术,而是指以大模型技术为底座构建上层应用或产品。
而今天所讲的主要是关于神经网络技术的学习,包括怎么实现一个神经网络,应该使用哪些工具等等。
神经网络技术学习及工具
先科普一下,现在爆火的大模型技术就是基于深度学习的神经网络模型;所谓的大模型技术本质上就是神经网络技术。
从应用层面来看,我们给大模型一个输入,然后大模型就会给我们一个输出;不论是文字,图片还是视频都是如此,而这个也叫做AIGC。
但问题就在于大模型是怎么做到的呢?也就是怎么才能实现一个这样的神经网络模型?
从原理上来看,神经网络模型就是模仿人类大脑的物理结构,也就是大脑神经网络;然后使用数学建模的方式,根据人脑神经网络构建的数学模型。
因此,第一个学习神经网络的重要工具就出现了——数学计算,具体落地就是pyTorch和Tensorflow等科学计算框架;pyTorch和Tensorflow框架中封装了大量的数学计算公式,如微积分,概率,线性代数,向量计算等;当然,除这两者之外还有其它计算框架,这里就不多介绍了。
而从应用上来说,数学只是一种工具,解决具体的问题还需要有具体的理论基础;比如说,pytorch框架中有微分方程,向量计算;但第一步是先进行向量计算还是进行微分计算,这个就是有神经网络理论所决定的。
因此,这里就涉及到了学习神经网络模型的第二个工具,神经网络模型结构;典型的如Transformer,RNN,CNN,LSTM等模型结构。由于目前神经网络这个数学模型还无法做到像真正的人脑一样,因此根据不同的任务目标设计出了不同的神经网络结构模型。
在学习神经网络模型结构中,虽然官方和网络上给了大量的学习案例,但神经网络模型为什么能够经过多种网络层的变换,就可以“学习”和“生成”新的内容,这个就需要大量的基础理论,如数学,脑科学,计算机科学等。
否则,即使你按照别人的架构实现了一个神经网络模型,并且能够很好的完成任务目标;也不一定能真正理解神经网络的运作原理。
再然后就是关于神经网络的训练,如损失计算,反向传播,优化函数,数据准备等。
比如说,什么类型的神经网络使用什么样的损失函数,以及反向传播方式;而优化函数又应该怎么实现,这个需要根据具体的网络模型设计来决定。
而数据准备也是一个复杂的处理过程;比如多种数据格式,多种数据来源,怎么把多种数据格式处理成统一的格式,以及文本,图像,视频等向量化。
具体来说,文本数据需要创建词库,需要确定输入数据等前后关系;图像数据的特征提取,以及不同格式数据在高维空间和低维空间中的表示以及转换问题。
总之,神经网络技术的学习是一个实践性很强的领域;单纯的实践和单纯的理论都很难学好神经网络这门技术。
有实践没理论,那么就像无头苍蝇一样,知其然不知其所以然;有理论实践,就会形成典型的眼高手低,感觉自己什么都懂,但一深入就直接傻眼。
所以,学习神经网络先用别人的案例,自己实现一个神经网络模型;然后能不能用,以及好不好用并不重要,先搞明白神经网络的运行机制再说。
本文转载自公众号AI探索时代 作者:DFires