最近刚好看了很多QA方面的论文,尝试从目前机器学习的角度来讨论一下。
总的来说,广义的问答系统就是要能够回答人类以不同形式提出的各种问题,但目前机器学习领域里面的Question Answering往往是指文本问题的回答(也有特别地用Textual Question Answering这个词的)。
在文本问题的问答系统中,机器要回答问题,就必须有一个答案的来源(Underlying knowledge sources),而不可能凭空产生。常见的方法有以信息检索(Information Retrieval)为基础的和以一些固定的知识库(Knowledge Base)为基础的。
对于信息检索的方法,一般需要按照问题在大量的非结构化文本(plain text,就是像网页中大段大段的文本,比如这条帖子)中找出相关的文档,然后形成对应的答案。谷歌搜索里面直接给出答案就属于这一类。
而知识库为基础则需要预先建立好一个结构化的知识库(比如知识图谱),在收到提问时,按照问题进行查询或者匹配,形成答案。但是这类方法一般都是用于固定领域(Closed-Domain)的QA,因为知识库构建往往要耗费大量的人力,况且要将各种知识表示成计算机可以处理的形式也是一个挑战。
(A survey on question answering systems over linked data and documents)
可以看到其实中间需要很多的步骤,但目前也有很多成功的端到端(End-to-End)的框架,即输入是问题,输出就是答案。但个人觉得这类框架在应用到具体场景时比较优雅的同时也损失了一定的普遍性。
回到让机器做物理题的问题上来。实际上,各类的问答系统面临的挑战是类似的。因此,我觉得沿用文本问答系统的框架是没有太大问题的。
不过面对选择题、填空题和应用题,机器需要给出的答案的结构都是不一样的。简单的办法就是直接每种题型来一个模型xd。
怎样让机器处理问题呢。物理题与文本问题不同,它不仅仅包含文本,还有数学公式、图片等等。这需要我们的模型能够处理不同结构的数据。一个比较相关的研究方向是多模态机器学习。以往的许多研究大多是“各自为政”的模式,而多模态要求模型能够处理来自多个模态的信息。(但这方面我也不太熟悉,这个方向似乎还算是一个比较新的领域。)
给出答案的过程,基于知识库的话,首先需要一个知识库来表示所需要的知识
0x0001 。所以我们是否可以构建一个包含课本和课外知识、解题技巧、往年高考卷出题思路、考纲要求等等的知识图谱呢?结合这个图谱,整理各个知识点对应的题型、例题,设计自动测评、出题练习、复习规划(辅助巩固记忆)的机制。
然后进行推理等等。这一方式其实比较接近于人类的思考模式,但是感觉实现起来感觉挺困难的。主要是需要太多的人工做的东西了,感觉不太优雅。
其实从另外一个方面来说
机器把所有题目都看过,倒也是另外一种方法?比如自然语言处理里面的GPT-3模型,用来训练的数据集超级大。也就是相当于,任何问题的句子它都看过一遍了,这时也不需要模型有泛化能力了。
另外之前看到相关的几篇论文。A Hybrid Framework for Problem Solving of Comparative Questions里面就是把比较的问题拆成多个子问题来处理(他们用的数据集我记得好像就是修改高考地理的题目)。
Machine Comprehension of Spoken Content: TOEFL Listening Test and Spoken SQuAD(李宏毅老师的!)就提出了一个模型来做托福听力选择题。大概就是先把听力转成文本,然后文本和选择题的问题及选项一起处理,得出最终的选择。
感觉写得有点乱……大家随意看看