Machine learning 你能“教”计算机用变量表达式(如aX+bX=(a+b)X)代数学吗

Machine learning 你能“教”计算机用变量表达式(如aX+bX=(a+b)X)代数学吗,machine-learning,artificial-intelligence,Machine Learning,Artificial Intelligence,假设在这个例子中,小写是常量,大写是变量 我希望有一些程序能够智能地完成像代数这样的特定任务,但教授程序新方法应该很容易使用人类理解的符号。例如,如果程序告知了以下事实: aX+bX=a+bX 如果a=bX,则X=a/b 然后,它应该能够执行以下操作: 2a+3a=5a 3x+3x=6x 3x=1,因此x=1/3 4x+2x=1->6x=1,因此x=1/6 我试图用Prolog做类似的事情,因为它可以很容易地理解变量,但后来我遇到了太多的复杂问题,主要是因为两个描述关系的方法都会导致崩溃。不容易

假设在这个例子中,小写是常量,大写是变量

我希望有一些程序能够智能地完成像代数这样的特定任务,但教授程序新方法应该很容易使用人类理解的符号。例如,如果程序告知了以下事实:

aX+bX=a+bX

如果a=bX,则X=a/b

然后,它应该能够执行以下操作: 2a+3a=5a

3x+3x=6x

3x=1,因此x=1/3

4x+2x=1->6x=1,因此x=1/6

我试图用Prolog做类似的事情,因为它可以很容易地理解变量,但后来我遇到了太多的复杂问题,主要是因为两个描述关系的方法都会导致崩溃。不容易理清


总而言之:我想知道一个程序是否可以只用数学符号来教授代数。我想知道是否有其他人尝试过这个方法,以及它的复杂程度。这样做的目的是使编程更容易运行时并不是那么重要,它取决于您希望机器做什么以及它的智能程度

你的问题主要是关于AI,而不是ML。AI处理人工任务的形式化,而ML虽然是AI的一个子集,但却是关于从数据构建模型

所述程序可以如下实现:

每个事实形成一个模式。程序给出了一个表达式和一些模式,可以尝试将其中的一些应用到表达式中,看看会发生什么。例如,如果您希望您的程序能够求解给定规则的二次方程,如ax²+bx+c=0→ x=-b±sqrtb²-4ac/2a,则其设计如下:

有人给了一套规则。规则由模式和结果解决方案或等效形式组成。将模式视为一种正则表达式

然后,程序被要求显示一些智能,并通过使用给定表达式做某事来证明其知识。主要部分如下:

如果模式适用于表达式,则可以通过应用可能的规则来构建表达式图,并添加具有相应结果的新顶点。 然后运行一些路径搜索算法A*,例如,查找导致x=。。。
我认为这是一个有趣的问题,尽管它在SO工具推荐中偏离了主题

不过,因为它抓住了我的想象力,我写了两个函数,用它可以很容易地解决类似的问题

首先,您必须安装R,之后您需要下载名为

所以在R控制台中运行

install.packages("stringr")
library(stringr)
然后你可以定义我写的以下函数

FirstFunc <- function(temp){
paste0(eval(parse(text = gsub("[A-Z]", "", temp))), unique(str_extract_all(temp, "[A-Z]")[[1]]))
}

SecondFunc <- function(temp){
 eval(parse(text = strsplit(temp, "=")[[1]][2])) / eval(parse(text = gsub("[[:alpha:]]", "", strsplit(temp, "=")[[1]][1])))
}
会回来的

"4X"
0.5
0.1
现在,这个函数非常原始,主要是为了说明,它将求解只包含一种变量类型的方程,像FirstFunc3X-2X-2Y这样的函数不会给出正确的结果,但是函数可以很容易地修改

第二个函数将解决如下问题

SecondFunc("4x-2x=1")
会回来的

"4X"
0.5
0.1

会回来的

"4X"
0.5
0.1

请注意,此函数也仅适用于一个未知变量x,但也可以轻松修改

简短回答为“是”。问题是我没有足够的资格向你解释它是如何工作的。