對話系統(tǒng)(對話機(jī)器人)本質(zhì)上是通過機(jī)器學(xué)習(xí)和人工智能等技術(shù)讓機(jī)器理解人的語言。它包含了諸多學(xué)科方法的融合使用,是人工智能領(lǐng)域的一個技術(shù)集中演練營。圖1給出了對話系統(tǒng)開發(fā)中涉及到的主要技術(shù)。
對話系統(tǒng)技能進(jìn)階之路
圖1給出的諸多對話系統(tǒng)相關(guān)技術(shù),從哪些渠道可以了解到呢?下面逐步給出說明。
圖1 對話系統(tǒng)技能樹 數(shù)學(xué)
矩陣計算主要研究單個矩陣或多個矩陣相互作用時的一些性質(zhì)。機(jī)器學(xué)習(xí)的各種模型都大量涉及矩陣相關(guān)性質(zhì),比如PCA其實是在計算特征向量,MF其實是在模擬SVD計算奇異值向量。人工智能領(lǐng)域的很多工具都是以矩陣語言來編程的,比如主流的深度學(xué)習(xí)框架,如Tensorflow、PyTorch等無一例外。矩陣計算有很多教科書,找本難度適合自己的看看即可。如果想較深入理解,強(qiáng)烈推薦《Linear Algebra Done Right》這本書。
概率統(tǒng)計是機(jī)器學(xué)習(xí)的基礎(chǔ)。常用的幾個概率統(tǒng)計概念:隨機(jī)變量、離散隨機(jī)變量、連續(xù)隨機(jī)變量、概率密度/分布(二項式分布、多項式分布、高斯分布、指指數(shù)族分布)、條件概率密度/分布、先驗密度/分布、后驗密度/分布、最大似然估計、最大后驗估計。簡單了解的話可以去翻翻經(jīng)典的機(jī)器學(xué)習(xí)教材,比如《Pattern Recognition and Machine Learning》的前兩章,《Machine Learning: A Probabilistic Perspective》的前兩章。系統(tǒng)學(xué)習(xí)的話可以找本大學(xué)里概率統(tǒng)計里的教材。
最優(yōu)化方法被廣泛用于機(jī)器學(xué)習(xí)模型的訓(xùn)練。機(jī)器學(xué)習(xí)中常見的幾個最優(yōu)化概念:凸/非凸函數(shù)、梯度下降、隨機(jī)梯度下降、原始對偶問題。一般機(jī)器學(xué)習(xí)教材或者課程都會講一點(diǎn)最優(yōu)化的知識,比如Andrew Ng機(jī)器學(xué)習(xí)課程中Zico Kolter講的《Convex Optimization Overview》。當(dāng)然要想系統(tǒng)了解,最好的方法就是看Boyd的《Convex Optimization》書,以及對應(yīng)的PPT(https://web.stanford.edu/~boyd/cvxbook/)和課程(https://see.stanford.edu/Course/EE364A,https://see.stanford.edu/Course/EE364B)。喜歡看代碼的同學(xué)也可以看看開源機(jī)器學(xué)習(xí)項目中涉及到的優(yōu)化方法,例如Liblinear、LibSVM、Tensorflow就是不錯的選擇。
常用的一些數(shù)學(xué)計算Python包:
NumPy:用于張量計算的科學(xué)計算包
SciPy:專為科學(xué)和工程設(shè)計的數(shù)學(xué)計算工具包
Matplotlib:畫圖、可視化包
機(jī)器學(xué)習(xí)和深度學(xué)習(xí)
Andrew Ng的“Machine Learning”課程依舊是機(jī)器學(xué)習(xí)領(lǐng)域的入門神器。不要小瞧所謂的入門,真把這里面的知識理解透,完全可以去應(yīng)聘算法工程師職位了。推薦幾本公認(rèn)的好教材:Hastie等人的《The Elements of Statistical Learning》,Bishop的《Pattern Recognition and Machine Learning》,Murphy的《Machine Learning: A Probabilistic Perspective》,以及周志華的西瓜書《機(jī)器學(xué)習(xí)》。深度學(xué)習(xí)資料推薦Yoshua Bengio等人的《Deep Learning》,以及Tensorflow的官方教程。
常用的一些工具:
scikit-learn:包含各種機(jī)器學(xué)習(xí)模型的Python包
Liblinear:包含線性模型的多種高效訓(xùn)練方法
LibSVM:包含各種SVM的多種高效訓(xùn)練方法
Tensorflow:Google的深度學(xué)習(xí)框架
PyTorch:Facebook的深度學(xué)習(xí)框架
Keras: 高層的深度學(xué)習(xí)使用框架
Caffe: 老牌深度學(xué)習(xí)框架
自然語言處理
很多大學(xué)都有NLP相關(guān)的研究團(tuán)隊,比如斯坦福NLP組,以及國內(nèi)的哈工大SCIR實驗室等。這些團(tuán)隊的動態(tài)值得關(guān)注。
NLP相關(guān)的資料網(wǎng)上隨處可見,課程推薦斯坦福的“CS224n: Natural Language Processing with Deep Learning”,書推薦Manning的《Foundations of Statistical Natural Language Processing》(中文版叫《統(tǒng)計自然語言處理基礎(chǔ)》)。
信息檢索方面,推薦Manning的經(jīng)典書《Introduction to Information Retrieval》(王斌老師翻譯的中文版《信息檢索導(dǎo)論》),以及斯坦福課程“CS 276: Information Retrieval and Web Search”。
常用的一些工具:
Jieba: 中文分詞和詞性標(biāo)注Python包
CoreNLP: 斯坦福的NLP工具(Java)
NLTK: 自然語言工具包
TextGrocery:高效的短文本分類工具(注:只適用于 Python2)
LTP: 哈工大的中文自然語言處理工具
Gensim:文本分析工具,包含了多種主題模型
Word2vec: 高效的詞表示學(xué)習(xí)工具
GloVe:斯坦福的詞表示學(xué)習(xí)工具
Fasttext : 高效的詞表示學(xué)習(xí)和句子分類庫
FuzzyWuzzy: 計算文本之間相似度的工具
Elasticsearch: 開源搜索引擎
對話機(jī)器人
對話系統(tǒng)針對用戶不同類型的問題,在技術(shù)上會使用不同的框架。下面介紹幾種不同類型的對話機(jī)器人。
對話機(jī)器人創(chuàng)建平臺
評論