如何看待「机器学习不需要数学，很多算法封装好了，调个包就行」这种说法？
==2022.11.22更新== 更专业的回答，请参考 @微调 的回答，他是专业人士，同时兼顾学术界和工业界的经验： ===以下为原回答=== 推荐一本书，俗称“火蜥蜴书”，这本书是我看过的机器学习和深度学习方面写的最好的一本书，对算法的讲解和应用非常到位，没有复杂的数学公式和推导，而是侧重算法的优缺点、应用场景、关键参数，算法本身的原理介绍也是通俗易懂。 ======================2017.11.02补充======================== 更变态的来了，基本上把神经网络都封装了，更不用说算法了： keras项目：Keras中文文档 tensorflow的tf.estimator:  tf.estimator Quickstart =======================2017.10.22补充============================== 最近在玩TensorFlow，基本验证了原答案，举几个简单的例子： tf.sigmoid:  sigmoid算法实现 tf.nn.softmax:  softmax算法实现 tf.squared_difference：差平方 tf.train.GradientDescentOptimizer：梯度下降算法优化器 tf.nn.relu：relu算法 tf.tanh：双曲正切函数 tf.nn.conv2d：卷积层 tf.nn.max_pool：池化层 一行简单代码： =======================以下是原答案================================ 我记得我刚毕业的时候，老师学长谆谆教导：计算机体系结构很重要，8086指令、段地址、寄存器、内存寻址、指针、深入浅出MFC、冒泡排序、快速排序、链表。。。。。。很重要，如果不懂，肯定不能成为好程序员，就算是同样调用API完成任务，你要是懂这些，关键时刻就你会懂，老板不给你加薪给谁加薪？ 然而，毕业后我没有去做嵌入式、没有去做驱动、没有用汇编，以上这些全部都没什么卵用，用MFC也只是调用API，没有自己手写冒泡，后来用Java，HasMap、List等都是调API，也没见老板因为我不懂降我工资，因为我老板也不懂这些，他只看我有没有完成任务，有没有给它赚钱，他不会管我是调用API还是写汇编完成的；也没见哪位同事因为懂这些加薪了，因为工作中根本用不上！ 相反，我发现Java虚拟机垃圾回收原理、MySQL索引设计技巧、tcp网络编程模型、CAP、BASE。。。。。。等非常有用，不但解决了业务问题，老板还给我加薪，公司还给我升级，还可以到外面给别人演讲！ 所以，回到题主的问题，你应该先问一下自己几个问题： 1）你是做什么专业的 是机器学习理论研究么？ -> 如果不懂数学，还是尽早转行吧！ 还是将机器学习应用到业务中去？-> 不一定要懂很多数学，确实算法封装好了，应用就可以了，至于说调优，也是调参数，不是调算法，要开创一个新算法，那就属于机器学习的理论研究范畴了。 2）现在机器学习发展是什么阶段？ 相当于50年代的纸带编程，还是60年代的汇编？还是70年代的C语言？还是90年代的Java？ 我理解机器学习现在类似于70年代的C语言，虽然写起来很方便了，但还是要和指针内存打交道，这里的指针和内存就是机器学习的算法中的数学知识，所以我觉得即使算法封装好了，也要理解基本原理，不然这么多算法，你怎么知道选哪个算法？