机器学习中的问题解决方案:解析解vs数值解
2018年04月18日 由 浅浅 发表
126846
0
你有没有如下这些疑问:
- 什么数据最适合我的问题?
- 什么算法最适合我的数据?
- 如何实现算法的最优配置?
这篇文章会让你了解为什么没人能告诉你要使用什么算法,或如何为特定的数据集配置算法。另外,找到好的数据、算法、配置实际上是应用机器学习的难点,也是你需要集中解决的部分。
下面让我们开始吧。
解析解vs数值解(Analytical vs Numerical Solutions)
数学运算中,许多问题可以靠解析解和数值解来解决。解析解包括用一种易于理解的形式来描述问题,并计算出精确解。数值解意味着在解法中进行猜测,并测试问题,直到得到足够好的解法。比如平方根就可以用这两种方法的任意一种解决。
我们一般更喜欢解析解,因为它速度更快,而且解法精确。然而,由于时间或硬件容量的限制,有时我们必须采用数值解。举一个很好的例子,在寻找一个线性回归方程的系数时可以进行解析解计算(例如使用线性代数),但如果为了执行解析计算,就无法对应单一电脑内存中的所有数据,这时就可以用数值解(例如使用梯度下降法)。有时,解析解是未知的,我们所能用的就是数值解。
解析解
许多问题都有定义明确的解决方案,一旦问题被定义,解决方案就很明显了。我们可以遵循一套逻辑步骤来计算精确的结果。例如,给定一个特定的算法任务,例如加法或减法,你知道应该用什么运算方法。在线性代数中,将矩阵进行因式分解有一系列方法,具体取决于矩阵的性质,是正方形还是矩形,是否包含实数或虚数等等。
我们可以将这个问题扩展到软件工程上,其中有一些问题会反复出现,不管你的应用特性如何,都可以用已知的有效模式来解决。例如,在游客模式中,对列表中的每一个项目执行操作。
应用机器学习中存在的一些问题定义明确,并附有解析解。例如,无论整数值的数量多少,将分类变量转化为热码编码的方法不仅简单,而且几乎都是用相同的方法。不过在机器学习中,我们关心的大多数问题都没有解析解。
数值解
有很多我们感兴趣的问题都没有精确解。或者说至少我们还没有找到解析解。我们必须对解法进行猜测,并测试这种解法有多合适。这涉及到设计问题,并在候选的解法中进行试误。从本质上说,找到数值解的过程相当于进行搜索。
这种解法有一些有趣的特性:
- 我们很容易从不合适的解法中分辨出好的解法;
- 我们经常不客观地觉得自己知道好的解法是什么,并且只能在测试过的候选解法之间比较它们的优点;
- 我们通常对近似解法或自认为足够好的解法感到满意,而不是真正得到了唯一那个最佳解法。
最后一点是关键,因为我们试图用数值解来解决的问题通常是具有挑战性的(我们没有简单的方法来解决它们),而任何自认为不错的解法都不实用。对于给定的问题有许多解法,甚至其中许多解决方案很合适,可以使用。但在应用机器学习中,我们感兴趣的大多数问题都需要数值解法。还有比这更糟的情况:在此过程中,每个子问题的数值解可能会影响到后续子问题的解法空间。
机器学习中的数值解
应用机器学习是一门与数值有关的学科。给定的机器学习模型的本质是优化,它实际上是在寻找一组带有未知值的项来填充一个等式。每个算法都有不同的方程式和术语,它们可以自由使用这个术语。为了对给定的术语进行预测,这个方程式式很容易计算,但是利用给定的数据,我们并不知道用哪些术语能够得到“好的”甚至“最好的”预测。
这是我们一直想要解决的数值优化问题。它是数值的,因为我们试图用观察到的极限样本来解决优化问题,而这些样本冗杂、不完整并且容易出错。该模型尝试解释数据,并在观察结果的输入和输出之间创建映射。
机器学习中广泛的经验主义解法
机器学习算法的核心——数值优化问题,是嵌套在更广泛的问题内的。具体的优化问题受许多因素的影响,所有因素都为最终解决方案的精华部分做出了巨大贡献,而且这里面不包含解析解。
例如:
- 用什么数据;
- 用多少数据;
- 在建模前如何处理数据;
- 用什么建模算法;
- 如何配置算法;
- 如何评估机器学习算法
客观来说,以上这些是你会在预测模型时遇到的机器学习的问题。没有解析解,所以你只能探索哪种元素组合起来最适用于你的特定问题。这其实相当于重要的搜索问题,这些组合都要被测试和评估。在这样的问题中,你需要知道相对于你已经尝试过的其他候选方案,好的得分应是多少。而且除了试误,或是借鉴其他已得到合适解法的相关问题之外,没有其他的路可走。
这种应用机器学习的经验主义方法通常被称为“搜索式机器学习(machine learning as search)”,并在A Gentle Introduction to Applied Machine Learning as a Search Problem和Why Applied Machine Learning Is Hard两篇论文中有进一步阐述。
回答你的问题
让我们回到你的疑问上来,就是那些关于用什么数据、算法或配置会完美解决你的特定预测建模问题。没人会看你的数据或你描述的问题,然后告诉你怎样解决最好,甚至连差不多的方法都不会提供。
专家们可能会根据经验来进行研究,其中一些前期猜想可能会得到验证,但通常来说都会被否定,毕竟它们太过复杂或干脆就是错误的。
为了找到足够合适的解法,预测建模问题是非常有必要的,这也是作为机器学习从业者应该做的。这样的工作对于应用机器学习来说很困难,但必须一直练习并达到擅长的程度,才能在这一领域中胜任。
总结
在这篇文中,你也许已经明白了解析解和数值解的区别,以及应用机器学习的经验主义属性。
另外你应该也理解了:
- 解析解是产生精确解的逻辑步骤;
- 数值解是一种较慢的试误过程,可以得到近似解;
- 数值解是应用机器学习的核心,用调整过的思维模式来为特定的预测建模问题选择数据、算法和配置。