第311章 燧火机器学习开发框架
燧火之名,源自燧人氏取火的古老神话传说,那是人类首次掌控的可控能源。
如今,历景铄希望它能成为机械智能的起源,开启一个全新的时代。
燧火框架主要涵盖了数据处理、模型构建、模型训练、模型评估这四大核心功能模块。
先说数据处理部分,数据加载环节至关重要,它具备从本地文件、网络文件系统和数据库等数据源读取数据的能力。当然,前世常见的各种大数据文件系统或者对象存储文件系统现在连影都没有,这个框架自然也不会有对应的加载处理能力。
数据从数据源里面读取进来之后,会被转化成与数据类型相适配的对应内存数据结构。
在秦奕的建议下,燧火里定义了一个和前世流行机器学习框架 pytorch 中的张量类似的基本数据类型来存储各种各样的数据,该数据类型是基于乾坤语言原生多维数组的一种对象,能够很方便的表示零维标量、一维向量、二维矩阵甚至更高维的数据。
历景铄做得是计算机视觉算法研究,最常用的便是表达一张图片的三维数组,三维分别是长、宽、颜色通道,颜色通道数值可以是 rgb 这种数字图像和视频处理的标准颜色表示方式也可以是 cmy 这种印刷行业标准的颜色模型,框架里提供了两种模型互相换算的能力。
在将数据读取进内存之后,用户就需要对现有的数据做预处理了,燧火框架提供了一系列数据清洗、归一化、标准化等预处理操作。
在数据清洗方面,框架提供了多种便捷的清洗能力。
面对文本数据中可能出现的乱码,框架会通过字符编码识别与转换算法,将其纠正为正确的字符格式。
若是数据中存在重复记录,比如数据库中可能因录入失误产生的完全相同的行,燧火框架会利用哈希算法对每条记录进行快速计算,对比哈希值来精准识别并删除重复数据。
对于缺失值,若是数值型数据,框架会依据数据的分布情况,采用均值、中位数或者众数填充法。
比如对于一组学生成绩数据,若某个学生的数学成绩缺失,会先计算其他学生数学成绩的均值,再用该均值填充缺失值;若是类别型数据,如学生的籍贯信息缺失,就会采用出现频率最高的籍贯类别进行填充。
在归一化操作上,燧火框架主要运用了两种常用方法。一种是最大 - 最小归一化,它将数据的取值范围映射到从零到一的双闭区间,另一种是 z - score 归一化,它基于数据的均值和标准差进行转换,将数据转换为均值为 0,标准差为 1 的分布。
通过这样的归一化处理,不同特征的数据在数值范围上保持一致,避免因特征数值范围差异过大,导致模型训练时某些特征被过度重视或忽视。
标准化操作在燧火框架中也有便捷的实现方式,框架会对数据进行零均值化处理,即先计算数据的均值,然后将每个数据点减去均值,使得处理后的数据均值为 0,接着计算数据的方差,再将每个数据点除以方差的平方根,从而得到方差为 1 的数据分布。
历景铄在设计燧火框架时,精心打磨了这些功能,如此一来,用户便能利用燧火框架进行细致的清洗、归一化和标准化,让数据以最佳状态进入下一阶段。
在后面的模型构建、训练、评估三大功能模块,秦奕同样大幅度借鉴 pytorch 的设计来指导历景铄团队燧火框架的设计。
如此一来,在模型构建环节,用户可以轻松定义各种机器学习模型,不管是简单的线性模型,还是复杂的决策树、神经网络等都不在话下。
在训练方面框架也直接内置了经典的随机梯度下降算法等优化算法,用户只要写一行代码便可以以此来训练模型,不断调整模型的参数,以最小化损失函数。
这里不得不提到反向传播算法,它是模型训练中极为关键的一环,在神经网络中,正向传播负责将输入数据通过各个神经元层层传递,最终得到预测结果。
而反向传播则是在计算出预测结果与真实标签之间的误差后,从输出层开始,沿着与正向传播相反的方向,将误差信号依次向后传播。
在这个过程中,利用链式法则计算每个参数的梯度,梯度代表了参数在哪个方向上变化能最大程度减少误差。
例如,对于一个简单的包含输入层、隐藏层和输出层的神经网络,正向传播时输入数据经过隐藏层的权重矩阵和激活函数计算后得到输出,与真实标签对比得到误差。
反向传播时,从输出层的误差开始,根据激活函数的导数以及权重矩阵,逐步计算出隐藏层权重的梯度,进而更新权重,使得模型在下次预测时能更接近真实值。
最后在模型评估环节,燧火框架的评估指标计算功能能够精准计算各种评估指标,像准确率、召回率、均方误差等,这些指标能直观地反映模型的性能。
除了这几个核心功能之外,燧火框架还有一个十分实用的辅助功能 —— 可视化。
它能将模型训练的结果、数据的分布等以可视化的方式呈现出来,帮助用户更好地理解模型和数据,历景铄团队目前是基于乾坤语言的乾元绘卷图形接口库整合了一些绘制数据的散点图、模型的训练曲线等比较简单的图表绘制功能。
后续他们还会基于机器学习方面功能进一步开发出各种直观的可视化图表,从数据的初始分布,到模型训练过程中的变化,再到最终的评估结果,都能以清晰的图表形式展现,让复杂的数据和模型不再晦涩难懂。
有了这么一个趁手的开发框架,历景铄的人工智能项目在这一年来也已经取得了初步的进展。