对话系统(对话机器人)本质上是通过机器学习和人工智能等技术让机器理解人的语言。它包含了诸多学科方法的融合使用,是人工智能领域的一个技术集中演练营。图1给出了对话系统开发中涉及到的主要技术。
对话系统技能进阶之路
图1给出的诸多对话系统相关技术,从哪些渠道可以了解到呢?下面逐步给出说明。
图1 对话系统技能树
数学
矩阵计算主要研究单个矩阵或多个矩阵相互作用时的一些性质。机器学习的各种模型都大量涉及矩阵相关性质,比如PCA其实是在计算特征向量,MF其实是在模拟SVD计算奇异值向量。人工智能领域的很多工具都是以矩阵语言来编程的,比如主流的深度学习框架,如Tensorflow、PyTorch等无一例外。矩阵计算有很多教科书,找本难度适合自己的看看即可。如果想较深入理解,强烈推荐《Linear Algebra Done Right》这本书。
概率统计是机器学习的基础。常用的几个概率统计概念:随机变量、离散随机变量、连续随机变量、概率密度/分布(二项式分布、多项式分布、高斯分布、指指数族分布)、条件概率密度/分布、先验密度/分布、后验密度/分布、最大似然估计、最大后验估计。简单了解的话可以去翻翻经典的机器学习教材,比如《Pattern Recognition and Machine Learning》的前两章,《Machine Learning: A Probabilistic Perspective》的前两章。系统学习的话可以找本大学里概率统计里的教材。
最优化方法被广泛用于机器学习模型的训练。机器学习中常见的几个最优化概念:凸/非凸函数、梯度下降、随机梯度下降、原始对偶问题。一般机器学习教材或者课程都会讲一点最优化的知识,比如Andrew Ng机器学习课程中Zico Kolter讲的《Convex Optimization Overview》。当然要想系统了解,最好的方法就是看Boyd的《Convex Optimization》书,以及对应的PPT(https://web.stanford.edu/~boyd/cvxbook/)和课程(https://see.stanford.edu/Course/EE364A,https://see.stanford.edu/Course/EE364B)。喜欢看代码的同学也可以看看开源机器学习项目中涉及到的优化方法,例如Liblinear、LibSVM、Tensorflow就是不错的选择。
常用的一些数学计算Python包:
- NumPy:用于张量计算的科学计算包
- SciPy:专为科学和工程设计的数学计算工具包
- Matplotlib:画图、可视化包
机器学习和深度学习
Andrew Ng的“Machine Learning”课程依旧是机器学习领域的入门神器。不要小瞧所谓的入门,真把这里面的知识理解透,完全可以去应聘算法工程师职位了。推荐几本公认的好教材:Hastie等人的《The Elements of Statistical Learning》,Bishop的《Pattern Recognition and Machine Learning》,Murphy的《Machine Learning: A Probabilistic Perspective》,以及周志华的西瓜书《机器学