人工智能
最近几年,人工智能成为了非常热闹的技术,不管是什么人,什么事都能和人工智能扯上关系。
人工智能,机器学习,括深度学习等有一大堆新名词,它们之间有什么关系呢?
简单来说,人工智能包括机器学习,机器学习又包括深度学习。
人工智能主要应用在 4 个方面:自然语言处理(文本),语音识别(声音),计算机视觉(图像),推荐系统(数据分析)。
网上关于机器学习入门有很多人总结了非常完善的学习路径。有很多经典的入门书籍,经典算法实现。其中要入门人工智能,主要是要用到机器学习。
关于机器学习要不要学习数学,是不是调个参数就好了。
赞同的和不赞同的有严重的分歧。
赞同学习的认为数学是机器学习的基础,没有学好数学,怎么可能学好机器学习。
可能要表达的意思是,你学不好数学,可以成为初级机器学习工程师,肯定到不了高级的算法工程师。
不赞同的也是大有人在,数学学不好不影响入门,千万不要被公式原理吓跑了。
这就像如果你是一个程序员,需要理解计算机原理吗?需要理解 Bus 总线,需要理解任务调度吗?
我想如果不是专门写操作系统相关的工作,做网站和或者做移动应用的花时间也解这些是闲得〇疼吧。
只要能调用 API,把项目做出来能运行就可以了。
我也觉得想入门的话还是不要花太多时间去研究数学,数学原理很多,要花太多的时间,很容易打击人的信心。
数学就像程序员里面的操作系统,你不会写没有关系,只要你会用就行了。有理解底层,会调 API 照样可以做出成果来。
其实学习编程的时候就有一个原理:不要想着把所有的原理都弄懂,不懂的先跳过,按照文档先把程序跑起来是最重要的。
编程语言入门非常简单:就是输出 hello world
。这里有一个编程语言的 hello world
命令:http://helloworldcollection.de/
拿 c
语言来说:
#include <stdio.h>
int main(void)
{
printf("Hello, world!\n");
return 0;
}
你只需要在编辑器里面输入这些语言点运行就可以了,只要能看到输出 hello world
,你就成功了。
你不需要管 c
语言是怎么编译运行的,.c -> .o -> a.out
。你也不需要知道为什么要写 main
这一行,前面的 include 是干什么的,怎么还要 return 0
。
所有的这些,你入门的时候不需要知道,你只要知道它是这么写的就对了。等入门后再对深入理解这些规则的来历。
在项目开发时也是如此,先出一个能运行的系统就行,管它有多少功能没有实现,有多少地方需要优化,只要你先出一个成品,就比竞争对手领先。
而想把项目一次做到完美程度,各种情况都考虑到,基本上是不可能的。
我的想法就是先能用,能产生实际产出,才会有继续下去的信心,而不是再重新学几年的异常难懂的算法。
人都是有惰性的,没有正向激励,很容易放弃,一上来就要学一大堆数学 :线性代数,概率统计,微积分。再去看到一大堆的推导公式,没有大毅力,没有几个能坚持下来的。
明天开始实现人工智能里面的 hello world
。