看机器学习如何求解多元一次方程?

问题起源
求解多元一次方程的解似乎看起来不是一件很难的事情,可以通过方程组的合并求解,从技术可行性上是完全没有问题的,但是能否有一个通用的模型帮助我们去求解多元一次方式呢?例如给定下列方程:

  5x+ 2y = 10
  x + 4y = 11

通过方程组的合并消元求解,则很容易得 x=1,y=0.25。如果写一个求解的该二元一次方程的求解函数,似乎也不是什么难事,但是如果变量不只是两个,对方程组合并消元的复杂度则会加大,甚至造成程序的可读性也变差。

机器学习的核心思想源自于数学,方程组合并消元的方法只是数学中人们总结的技巧,但并不是方程组求解的原始思路,此时此刻,我们需要借助最原始的数学思维帮助我们建立一个数学模型,辅助求解多元一次方程组。

问题抽象
我们将公式进一步抽象,变成程序可理解的数组,如下:

      5x+ 2y = 10 转变为数组[5,2,10]

      x + 4y = 11 转变为数组[1,4,11]

我们希望有一个数学模型的输入是两个数组:[5,2,10],[1,4,11],输出是方程求解的数组[1,0.25]。即希望有下所示的功能,将数学问题转变了计算机的工程问题。

// 定义线性方程组求解模型,2表示变量的个数
LinearEquation linearEquation = LinearEquation(2);
// 将第一个方程加入到模型中[5,2,10]
linearEquation.addEquation(new Double[]{5.0, 2.0}, 10.0);
// 将第二个方程加入到模型中[1,4,11]
linearEquation.addEquation(new Double[]{1.0, 4.0}, 11.0);
// 模型进行训练
linearEquation.practice();
// 输出训练后的x和y的值
System.out.println(Arrays.toString(linearEquation.getVariables()));

模型引入
对机器学习而言,永远逃不过两类计算,一个是距离计算,一个是概率计算。而方程式中的x和y我们可以理解为权重,即当x和y为某值时(5x+2y-10) 的距离尽可能短,使得几乎等于0,同理(x+4y-11)的距离也尽可能短,使得几乎也等于0,权重或为概率或为距离。类似这样的计算,很容易想到人工神经网络。

人工神经网络可以处理线性与非线性的问题,由于本问题是求解多元一次方程,因此是线性问题,可以采用人工神经网络中最基本的模型感知器进行求解,感知器是Frank Rosenblatt在1957年就职于Cornell航空实验室(Cornell Aeronautical Laboratory)时所发明的一种人工神经网络。它可以被视为一种最简单形式的前馈神经网络,是一种二元线性分类器。感知器使用特征向量来表示的前馈神经网络,把矩阵上的输入x(实数值向量)映射到输出值 f(x)上(一个二元的值)。感知器模型如下图所示:


感知器.png

通过上图可以看出,感知器模型由一下几个部分组成:
  1. 输入。输入主要是包括n个输入项pi,以及每一个输入项下对应的权重wi
  2. 激活函数。感知器可以灵活选择激活函数。激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
  3. 输出。感知器的输出则比较容易理解如下公式所示,其中b是偏执项:


感知器公式.png

一个较为实际的理解感知器即为:输入的x是对结果y的影响参数,但是每一个输入的x对y的影响都有相应的权重w,最终对y的影响结果则等于每一个输入与权重之和的累积。

模型应用与求解多元一次方程
感知器的训练过程是使得对应的wi处于某值的时候,输入的xi能够得到相应的y,实际也是在求wi的过程。而在对多元一次方程求解的时候,可以将未知数xi的系数视为wi,则多元一次方程是已知wi,y,求xi的过程。因此,我们可以将方程中的xi视为感知器中wi,方程中的wi视为xi,这样求方程的解,则完全转变为感知器的训练过程。而方程式的系数即可为感知器的训练集。如果方程式有三个未知数,则至少有三个方程(即三个训练集)才可能获得解,应用代码如下所示:

// 方程式一: 10.0*x1+2.0*x2 = 12.0
// 方程式二:1.0*x1+1.0*x2  = 2.0
// 根据上述方程可知: x1 = 1.0, x2 = 1.0
com.iveely.ml.application.LinearEquation linearEquation =
                new com.iveely.ml.application.LinearEquation(2);
linearEquation.addEquation(new Double[]{10.0, 2.0}, 12.0);
linearEquation.addEquation(new Double[]{1.0, 1.0}, 2.0);
linearEquation.practice();
Double[] ret = linearEquation.getVariables();
// 计算结果误差需小于0.1,可以根据学习速率和迭代次数调整精确度
assertEquals(1.0, ret[0], 0.1);
assertEquals(1.0, ret[1], 0.1);  

归纳总结
这是机器学习中神经网络最基本的实际应用,感知器能够解决多元一次方程问题的根本原因也是在于线性可分,理论上其它的机器学习模型也是可以做到。如果方程无解,则可以通过最小二乘法,找到一条最佳的直线,尽可能满足点的覆盖。

您的朋友:刘凡平(liufanping@iveely.com),LinearEquation源码请参见这里,iveely.ml源码参见这里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容