深度强化学习:算法原理与金融实践入门
上QQ阅读APP看书,第一时间看更新

1.6 智能决策系统建模

智能决策系统建模框架由环境和智能体组成,融合深度强化学习的智能决策系统将更加复杂。深度强化学习的训练过程就是智能体和环境的交互过程。为了对智能决策系统进行较为全面的认识,可以对智能决策系统的建模流程进行初步了解,我们在全局认识智能决策系统的基础上,从整体到局部,细化智能系统模块,完成智能系统模型构建、训练、验证、优化和应用部署。

图1.7给出了复杂系统环境下智能决策系统建模流程框架。框架包含了建模过程的8个环节,即问题提炼、数据采集、模型构建、算法实现、模型训练、模型验证、模型改进和模型运用。智能决策系统建模流程中各个环节之间都可以互相影响、互相关联,系统构建过程也是各个模块循环迭代优化的过程。

图1.7中各个模块之间也能够交替进行。智能决策系统模型在构建过程中会出现新的问题,新问题需要各个模块共同更新和修正来解决,因此智能决策系统建模流程并非是流水线,需要迭代更新,并全局优化。

1.6.1 问题提炼

智能决策系统建模的首要任务是明确所要解决的问题,界定问题所涉及的概念,并对问题进行抽象和提炼。现实社会极其复杂,我们所面对的问题通常也具有较高的复杂度,问题提炼要求对复杂环境进行简化建模,对问题进行抽象,对特征变量进行表示。一般来说,单目标决策问题要易于多目标决策问题。问题界定之初,我们需要抓住主要矛盾,忽略次要矛盾,通过合理抽象,使得模型既能够完成既定目标,又能够便于数据收集和模型实现。

图1.7 智能决策系统建模流程框架示意图

在智能系统建模和软件设计中,问题提炼部分可以看作需求分析,告诉开发者需要做什么,达到什么目标。对于问题的提炼切忌太理想化,设计一些不可能实现的目标,如解决准确预测金融危机这一问题,问题虽然很重要,但实现难度之大会让人觉得不切实际。

1.6.2 数据采集

数据采集是模型训练的基础,问题提炼过程中所涉及的对环境特征等变量进行表示都需要进行数据采集,采集数据的质量会影响决策智能体训练效率和模型最终绩效。在大数据时代,数据采集的途径越来越多,数据的规模越来越大,数据处理的难度也越来越高,例如数据的规模越大,所包含的噪声也越来越多,需要进行数据清洗,以提高数据质量。在数据采集过程中,我们要时刻对所提炼的问题进行审视,对数据与问题之间的关联进行分析,利用一些领域知识或者经验数据提高模型的可解释性。

高质量的数据是机器学习算法成功的关键之一。在计算机科学领域,开源代码平台中优质的深度学习模型和算法很丰富。一般而言,在实践应用过程中,开发者大部分时间和精力都在进行数据采集和数据预处理,在一些工程应用项目中,数据预处理时间可能占项目开发总时间的近80%。

1.6.3 模型构建

模型构建包括环境模型构建和智能体模型构建。在当今开源时代,很多优秀的模型和代码库都共享在网络平台上,开发者可以互相学习,共同推进模型的发展和改进。在模型的设计过程中,开发者可以先从简单模型入手,然后通过模型的升级和迭代,逐步完善模型,提高模型性能和质量。切忌一开始就期望能够设计出完美模型,因为我们需要花大量的时间和精力在各子模块和模型细节之中。

研究人员从简单模型入手,在训练过程中发现问题、解决问题,设计新模块或者子模型,进行模型升级与迭代更新,不断循环改进。如面对时间序列预测问题,我们可以尝试一些经典的循环神经网络(RNN)模型,完成模型训练后,对模型性能进行测评,如果模型性能不理想,可以进一步考虑更高级更复杂的LSTM模型和GRU模型等。

1.6.4 算法实现

TensorFlow和PyTorch等深度学习框架为算法实现提供了数量众多的可复用代码模块,面对复杂问题和复杂模型,都提供了很好的支持和实现方法,熟练地利用现有的成熟计算框架和预训练模型,能够提高模型开发效率,增强决策系统的稳定性和可靠性。由于智能决策系统建模需要编程开发能力,我们可以根据自己的编程水平选择不同的算法实现路径;初学者可以通过学习开源社区的优秀代码,完成算法实现;研究者或开发者为了精进自身算法实现能力,可以参考开源代码,手动设计代码框架,进行自主编程和算法改进,博采众长,逐步优化,完成智能决策模型的算法实现。

1.6.5 模型训练

高质量的样本数据和优秀的智能模型,是智能决策系统成功实现的基础。同时,深度学习模型的训练对硬件的要求较高,流行的计算平台TensorFlow和PyTorch框架都对分布式、GPU等高性能计算模式进行了很好的集成,能够充分运用硬件资源,高效地完成模型训练。模型训练之初可以先设计一些简单数据集,如对完整数据集的随机抽样构建子数据集。尽量不要一开始就在完整的海量数据集上进行模型训练,不但耗费时间资源和硬件资源,出现问题难以进行问题定位、算法调试和模型改进,更重要的是,大数据集严重影响模型迭代更新效率。在模型训练和超参数调优过程中,深刻理解模型和算法原理是有效调参和高效训练模型的关键,我们不能因为开源代码的易获得性而忽略了对算法原理的理解和学习。

1.6.6 模型验证

模型训练完成后,我们需要对训练好的模型进行验证或测试,考察模型实际运用的效果,并重点关注模型的泛化性能。模型训练数据收集完成后,我们将采集到的数据分成训练集、验证集和测试集。智能模型在训练集上进行训练,在验证集上进行可信、可靠的模型验证。模型验证过程需要严格区分样本内验证和样本外验证,同时对测试集进行严格的划分,避免因数据污染而导致验证无效。

交叉验证方法简单且易于理解,是机器学习中估计模型性能的常用验证方法。例如,K折(K-Fold)交叉验证方法将数据集均匀拆分为K个子集,每次使用K−1个数据子集作为训练集来模型训练,剩下的一个子集当作验证集进行模型验证,因此,K折交叉验证方法需要进行K次模型训练。

1.6.7 模型改进

在实际建模过程中,人们很难一开始就能够完成模型的既定目标。模型优化过程如同深度强化学习中策略函数的迭代更新过程。模型训练完成后,开发人员对模型进行评估,定位问题,改进模块,此过程也是非常耗费时间、人力资源和计算资源的。

与深度强化学习类似,人类设计决策系统的过程,也是一个试错的过程。人们将模型的训练结果作为反馈信息,衡量模型优劣,针对性地改进模型,包括重新审视模型设计的每一个环节。比如问题提炼是否符合实际?数据采集是否准确?是否引入数据偏差?数据颗粒度是否合理?数据时效是否达到要求?模型设计是否可以改进?算法实现过程是否存在逻辑问题?模型超参数设定是否合理?训练过程是否充分?有无过拟合或欠拟合情况?诸多问题在模型改进的反复优化和迭代更新过程中需要进行深入全面的思考。

1.6.8 模型运用

经过验证和改进的模型可以应用和部署到现实的复杂环境之中,对模型的实际运用效果进行考察。随着环境变化与时间推移,复杂问题背景也会发生变化,我们需要时刻监控模型运行效果,及时发现模型不足,甚至可能需要重新进行问题提炼、数据采集等操作。智能系统的构建和迭代更新过程本身就是一个复杂系统演化过程,面对环境的变化而实时地学习和改进,迭代更新,可使得模型越来越智能,更好地解决现实世界的复杂决策问题。

智能决策系统的设计过程本身就是一个复杂工程,各个环节和各个子模型构成了一个复杂工程系统,环环相扣,耦合关联,相互影响。因此,任何一个小小的失误都有可能造成模型的崩塌,或导致其性能低下。为了进行高效的系统设计和模型训练,我们需要更多的策略和方法,同时也需要更多的算法理论基础知识和编程实践能力,以及深度思考和持续学习的能力。