机器学习-卫星轨道预报精度提高

献给快乐的八月!

刚刚做的决定,以82%的概率每月发一篇推送。

今天分享一些已经发表的内容,一些对机器学习的理解,一些研究过程中的经验教训。

希望能引出一些值得讨论的问题,获得一些读者的指点和批评。

先限定一下范围,我的经验主要在于用machine learning的方法做nonlinear regression这部分,属于supervised learning。

所以,只有你的问题可以建模成一个从输入到输出的映射关系,本文才可能对你有一些帮助。

在研究过程中,我感觉到几个十分相近的概念和领域:

- Machine Learning

- Statistical Learning

- Data Mining

- Pattern Recognization

- Signal Processing

- Bayesian Inference

(无法一一列举,知识太多,难以掌握)

当然,他们都各自有所侧重,但是这对于基础应用型的研究不是很重要,只要能实现目标就好。在理解到一定程度后,再返回头来琢磨区别,会更有效。

总之,不要太在乎这几个领域的区别,需要就都去学。

同样,也发现了几个相差比较大的概念:

- Artificial Intelligence

- Vision/Figure/Speech Recongnization

- 许多种NN和GAN及衍生

- Reinforcement Learning

- Complex System

(同样无法一一列举,学识有限)

这些在刚开始时可以适当避开,它们在自己的领域内突飞猛进,效果惊人,但是在regression问题上的应用不是很显著。不过在数学知识上很多同根同源,多学无妨。

以下讨论中“机器学习”基本上特指针对非线性回归问题的算法。

=============

提高轨道预报精度

=============

以一些博后期间的部分研究成果为例介绍。

刚开始想要应用机器学习在我的研究领域内时,一直在带着以下这两个疑问思考问题:

- 机器学习可以解决什么传统方法解决不了的问题【不可替代性】

- 机器学习在什么问题上可以提供比传统方法更好的结果【较优性】

如果这两个性质都没有,使用机器学习很难站得住脚,可能并不适用。

近几年很火的图像、语音、文字识别,语义、情绪分析等等,都是一些传统方法无法有效解决的问题,但是,机器学习似乎目前来看取得了很好的效果。

所以,大部分人讲到机器学习时,讲的其实是这些领域的成果。

而前面提到的相似的领域,全部可以靠到机器学习上,沾沾光。

如果这个沾来的光是为了拉funding搞科研,我是完全支持的;如果是为了赚钱,我只能说资本的属性是图利的,无可厚非。

(插一小段段题外话:我更希望我们的资本能够图更长久的大利益,像西方国家的完成原始积累的先进资本一样,乐于在前期花费时间金钱培养一个新市场,然后再去瓜分这个大蛋糕。比如:大企业大佬们可以投资自己真正了解的、长期看好的高校科研人员,不求五年十年内的回报,允许失败。)

回到卫星轨道预测,简单说,需要:

- 精确的物理模型,包含:不规则引力场、大气阻力、太阳光压、其它辐射压、地壳和潮汐运动、月球引力、其它天体引力等。

- 精确的航天器模型,包含:外形、质量、表面属性、姿态动力学相关、控制器等。

- 精确的积分器。

- 精确的初始状态,依赖于轨道观测和轨道确定。

理论和工程研究可以集中在以上的任意一个部分,来提高卫星轨道的预测精度。

机器学习也可以嵌入到以上的任意一个部分,来尝试提高预测精度。那么问题来了,应用在哪个部分,才具有【不可替代性】或者【较优性】呢?

我的思考是这样(只是一种思路):

- 既然已经列出来了,机器学习在任意一点上,都不存在【不可替代性】

- 既然我作为入门级的学者,都可以把它们罗列出来,就代表已经有成熟的研究成果,普通的机器学习怕是很难获得【较优性】

换一个思路,我们可以想一个不包含在上述的,传统方法没有涉及过的,而且有价值的问题:

即使使用最好的模型和积分器,卫星轨道预测总会有各种各样的误差,这些误差可以认为是没有办法物理建模的(因为已经使用了最好的工具),这些误差中一定包含有一些纯粹的随机误差(来自仪器误差等),这部分是无法消除的。

那么排队掉随机性误差的部分里,还可能包含一些难于用传统方法建模的信息。比如,在某一时刻的卫星状态信息,是不充分的,不足以决定未来误差信息的,但是如果有一系列的历史数据,各个时刻的信息互补,就有可能对基于当前模型和积分器的误差信息有一个部分预测。

这个可能存在的关联,是难以抽象描述的,所以难于建立解析模型。

但这恰恰是机器学习擅长的领域,只需要有足够的恰当的数据,算法就可以学习到数据之下潜在的规律。

掌握了误差的规律,就可以在实际预测中抵消掉它,从而提高轨道预测精度!

以上这个方法在我们最近发表的文献中都有深入的研究和讨论。这里不纠结于细节,只想讲一下这个方法的两个优势:

- 基于物理模型:这个方法基于已有的精确动力学模型,无论动力学模型将来如何进步,只要存在误差,就可以利用这一思路发现误差的规律,只是误差可能会越来越小,规律可能会越来越不明显。

- 基于机器学习算法:这个方法可以使用不同的机器学习算法,只要是适用于非线性回归的,所以算法的发展会提高当前的效果。

如果你对data mining的观点比较熟悉,从数据挖掘的角度想,可能会更直接,就是预先不知道有什么,然后去发现数据中的隐藏规律,其实使用的算法大部分是和机器学习领域相同的。

我们尝试了几种有代表性的算法(SVM, ANN, GPR):

效果都很一致而且很不错,说明上述的假设还是在一定程度上合理的:

当然,各种算法,对不同的问题,都有各自的优势和劣势。

=============

学习机器学习算法

=============

我不是机器学习大佬,简单分享下我的学习路径,希望读者能从中受益。

中文-->英文-->中英文

- 先读中文材料(知乎、维基、博客)入门

- 再读英文材料(书、文献、程序文档)继续入门算法、应用、代码、结果分析等

- 最终是中英文交叉阅读,因为我对两种语言的理解,往往都会有偏差。

算法的应用-->算法-->代码

--> (算法代码我的应用)

- 找个带算例的工具包,先看看算法的应用,是不是和自己的问题有类比性

- 确定一个要仔细研究的算法,深入研究,适可而止

- 看算法的代码实现,了解在数值实现中要考虑的问题,和通常的解决技巧

- 最终结合自己的应用,在算法、代码、应用之间不停迭代

如果你会MATLAB,就把MATLAB的document读一遍,比如:

- Statistics and Machine Learning Toolbox

- Deep Learning Toolbox

- Optimization Toolbox

- Parallel Computing Toolbox

如果你用python,教我!

如果你用R,教我!

如果你用Julia,教我!

如果你用Java,教我……

所以,语言不是问题,每个都有很好的开源实现,和很好的文档教程。

快速学习一门新的语言:

语法规则;学每种语言的代码规范;找一个好的IDE;……

学会用Google,或者其它有效的搜索引擎。

学会用GitHub,以及其它所有可以利用到开源代码的工具。

学会找关键字、问问题。

强调,我这不是教程,看完学不会机器学习的任何算法。

=======

The End

=======

欢迎留言交流和提问。

推广:

测试版的博客:https://astroh-peng.github.io/SPACEofPHD

信息分享,我的读书笔记,技术笔记

向公众号发送"blog"获得邀请链接

测试新玩具 Aerospace Machine Learning on Slack

用搞生活和科研的态度提供代买服务的2人

“旁友,听说你在搞机器学习?”

(https://twitter.com/startrek/status/1013497670114127872)

(https://medium.com/tubi-tv/top-10-data-moments-in-star-trek-the-next-generation-62515283646a)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180929G09FGF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券