解决问题的细微方法
2016-04-08 23:27
176 查看
当我们手中的解决方法暴露出它的固有缺点时,其实我们要解决这个缺点的话不需要一下想的特别长远,不需要直接去想近乎完美的解决方案,我们只需要稍稍往前跨一步,稍稍改变现有的状况就好,然后测试观察这个新方法的效果,再寻找这个新方法的弊端,这样一步步的推进,一点点的探寻这些方法之间的细微区别,触摸到问题的本质,在这个过程中我们的思维会潜移默化地得到提升,奇妙般的解决原来看似不好解决的问题。同时这种非大跨步,非一次性的解决问题的思想反而会让我们看清思考的过程,抓住由于过于急躁、过于急功近利而忽视的许多细节,进而踏上解决问题的真正捷径。
举例来说,在最优化(Optimization)问题中有一种寻找最优解的算法叫 Hill Climbing,其主要思想是在一条函数曲线上通过比较任意一点周围邻近的数值,进而移动到这些点中数值最小的点上,不断迭代直到找到最小值。但是这种方法的最大问题在于有可能找到的是局部极小值点(local minimum),没有找到全局最小值点(global minimum)。为了解决这个问题,一种方法是反复多次使用这种算法,总会有达到最小值的情况。另一种方法是模拟退火(Simulated Annealing),重点就是当任意一点周围既有更小值的点,也有更大值的点时,它有一定的概率会跳到大值点上去,进而有可能避开hill climbing的弊端。
还有一个例子是有关统计语言模型建立的,我们认为一个句子是由很多词以一定概率组合在一起的,因此我们可以写出整个句子出现的概率,即所有词的联合概率,进一步展开成每个词条件概率的乘积。只要计算出每一个词的条件概率就可以得到整个句子的概率了。但是在计算时会发现,越往后计算条件概率的可能性就越多,无法估算。为了解决这个问题,马尔可夫想到一种偷懒但是有效的方法,即假设每一个词出现的概率只和它前面一个词有关,这样就大大简化了公式,方便计算,这种假设称为马尔科夫假设。
通过上面两个例子其实可以发现,当你面对一个看似不好解决的问题时,没必要拼命想一个高大上的方法,有时候一小点改变就会发现新大陆,进而在此基础上探寻更加深层的意义。
举例来说,在最优化(Optimization)问题中有一种寻找最优解的算法叫 Hill Climbing,其主要思想是在一条函数曲线上通过比较任意一点周围邻近的数值,进而移动到这些点中数值最小的点上,不断迭代直到找到最小值。但是这种方法的最大问题在于有可能找到的是局部极小值点(local minimum),没有找到全局最小值点(global minimum)。为了解决这个问题,一种方法是反复多次使用这种算法,总会有达到最小值的情况。另一种方法是模拟退火(Simulated Annealing),重点就是当任意一点周围既有更小值的点,也有更大值的点时,它有一定的概率会跳到大值点上去,进而有可能避开hill climbing的弊端。
还有一个例子是有关统计语言模型建立的,我们认为一个句子是由很多词以一定概率组合在一起的,因此我们可以写出整个句子出现的概率,即所有词的联合概率,进一步展开成每个词条件概率的乘积。只要计算出每一个词的条件概率就可以得到整个句子的概率了。但是在计算时会发现,越往后计算条件概率的可能性就越多,无法估算。为了解决这个问题,马尔可夫想到一种偷懒但是有效的方法,即假设每一个词出现的概率只和它前面一个词有关,这样就大大简化了公式,方便计算,这种假设称为马尔科夫假设。
通过上面两个例子其实可以发现,当你面对一个看似不好解决的问题时,没必要拼命想一个高大上的方法,有时候一小点改变就会发现新大陆,进而在此基础上探寻更加深层的意义。
相关文章推荐
- javascript中replace与正则表达式
- 搭建公司内部的NuGet Server
- 在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程
- 刚刚注册的博客
- forward和redirect 的区别
- hdu 1078 FatMouse and Cheese(dfs)
- arpack编译64位版本的记录
- JAVA 对象引用,以及对象赋值(转载)
- 互联网产品各阶段的标准流程文档
- Java笔记
- 2010上交:计算表达式
- Python3爬虫之爬取某一路径的所有html文件
- web框架--flask
- 用 Express4 写一个简单的留言板
- 剑指Offer--004-替换空格
- C++11中的bind与lambda比较
- PHP的单个文件上传、多个单文件上传、多文件上传
- QT5 Opengl (八,绘制雾的效果)
- Windows 10上快速尝鲜bash on Ubuntu
- JVM内存管理和JVM垃圾回收机制