這是《人工智能系列筆記》的第二篇,我利用週六下午完成課程學習。這一方面是由於內容屬於入門級,而且以前我已經對認知服務和機器人框架比較熟悉。 前端
若有興趣,請關注該系列 https://aka.ms/learningAI python
可是學習這門課程仍是頗有收穫,這篇筆記時特別加了"探祕"兩個字,這是由於他不只僅是介紹了微軟的認知服務和機器人框架及其如何快速開始工做,更重要的是也作了不少鋪墊,例如在講文本分析服務(Text Analytics)以前,課程用了至關長的篇幅介紹了文本處理的一些技術原理,畢竟不管是微軟的認知服務,仍是其餘廠商的服務,或者你本身嘗試去實現,其內部的原理都是相似的。 git
我將給你們分享三個部分的內容 github
第一部分:文本理解和溝通 框架
如今人工智能很火,花樣也不少,可能你們不會想到,很早以前人類對於機器智能的研究,最主要就是在文本理解和處理這個部分,科學家們想要實現的場景主要以下 ide
這跟人類自己的學習及成長是相似的,一旦機器掌握這些能力,其實就至關於具有了"據說讀寫"的能力。我聽說微軟二十年前創立研究院之處,主要的研究範圍也是在這個領域,二十年過去了還在繼續投資,不斷優化這方面的能力,可見其做爲人工智能的重要性。 學習
其實這裏提到的大部分過程,能夠理解爲一般意義上的天然語言處理(Natual Language Processing——NLP)的研究範疇。 測試
本次課程中使用python進行講解,提到了一個關鍵的package:NLTK(Natual Language Toolkit),以及它的幾個更加具體的庫:freqdist 用來作字(詞)頻分析,stem用來作詞幹提取等等。 優化
下面是一些基本的用法 網站
也就是說,其實你用NLTK能作出絕大部分文本理解和處理的場景,固然若是你用微軟的認知服務(Cognitive Service),則能夠省去不少基礎性的工做,而是直接專一在業務問題上。
前面三種服務都相對簡單,一般你只須要開通,而且調用相關的API 便可,例如 Text Analytics 可用來檢測文本語言,識別其中的實體,關鍵信息,以及情感分析。
而Language understanding 則相對更加複雜一點,它的全稱是Language understanding intelligence service (Luis),是有一套完整的定義、訓練、發佈的流程。換言之,Luis容許你自定義模型,而前面三者則是利用微軟已經訓練好的模型當即開始工做。申請Luis服務是在Azure的門戶中完成的,而要進行模型定義和訓練,則須要經過 https://luis.ai 這個網站來完成。
下面是我用來測試的一個模型的其中一個Intent (Luis能同時支持多種語言,甚至也能作到中英文混合文本的理解)
Luis最大的一個使用場合多是結合本文最後面提到的對話機器人來實現智能問答。
第二部分:計算機視覺
若是說文本智能是嘗試學習人類的"據說讀寫"的能力,那麼計算機視覺則是嘗試模擬人類的眼睛,來實現"看"的能力。
圖像分析其實就是比如人類看到一個物體(或者其影像),腦電波反射過來信號,使得你意識到你看到的是什麼。
這個能力用到了預先訓練好的模型。這個能夠經過認知服務中的Computer Vision這個組件實現。
可是,即使是上面的模型已經包含了數以百萬計的照片,但相對而言仍是很小的一個集合。因此,若是你想實現本身的圖像識別,可使用認知服務中提供的Custom vision這個能力來實現。
Custom vision擁有一個一樣很酷的主頁:https://customvision.ai/ ,經過這個網站,你能夠上傳你預先收集好的照片,而且爲其進行標記,一般狀況下,每一個標記至少須要5張照片,而後經過訓練便可發佈你的服務,而且用於後續的圖像識別檢測(例如某個圖像是否是汽車,或者香蕉之類的)。
人臉識別,則是特定領域的圖像識別,這個應用也是目前在人工智能領域最火的一個,而也由於臉是如此重要,因此在認知服務中,有一個專門的API,叫Face API。
使用這套API,能夠作出來頗有意思的應用,例如
從技術上說,圖像(Image)是由一個一個有顏色的數據點構成的,這些數據點一般用RGB值表示。而視頻(Video)則是由一幅一幅的圖像(Image,此時稱爲幀)構成的。因此,計算機視覺既然能作到圖像的識別和理解(雖然可能會有誤差),那麼從技術上說,它也就具有了對視頻進行識別和理解的能力,若是再加上以前提到的文本智能,它就能至少實現以下的場景:
第三部分:對話機器人
我記得是在2016年的Build大會上,微軟CEO Sayta 提出了一個新的概念:Conversation as a Platform, 簡稱CaaP,其具體的表現形式就是聊天機器人(chatbot)。
當時的報道,請參考 https://www.businessinsider.sg/microsoft-ceo-satya-nadella-on-conversations-as-a-platform-and-chatbots-2016-3/?r=US&IR=T
對話機器人這個單元,講的就是這塊內容。與人臉識別技術相似,機器人這個技術在這幾年獲得了長足的發展和普遍的應用,甚至到了婦孺皆知的地步。這裏談到的機器人,特指經過對話形式與用戶進行交互,而且提供服務的一類機器人,普遍地應用於智能客服、聊天與陪伴、常見問題解答等場合。
建立一個對話機器人真的很簡單,若是你有一個Azure訂閱的話。微軟在早些時候已經將機器人框架(Bot Framework)徹底地整合到了Azure平臺。
作一個機器人(Bot)其實真的不難,但要真的實現比較智能的體驗,還真的要下一番功夫。目前比較常見的作法是,前端用Bot Framework定義和開發Bot(用來與用戶交互),後臺會鏈接Luis服務或QnA maker服務來實現智能體驗,以下圖所示。
我在11月份的Microsoft 365 DevDays(開發者大會)上面專門講解了機器人開發,有興趣能夠參考 https://github.com/chenxizhang/devdays2018-beijing 的資料。
機器人框架 (Bot Framework)的一個強大之處在於,你能夠實現編寫一次,到處運行,它經過頻道(Channel)來分發服務。目前支持的頻道至少有16種。
我本身以前用過Web Chat,Microsoft Teams,以及Direct Line和Skype for Business等四種。一直對Cortana這個場景比較感興趣,此次經過學習,終於把這個作成功了,仍是挺有意思的。
這項功能,還有一個名稱:Cortana Skills,目前須要用Microsoft Account註冊這個Bot)。
請經過 https://aka.ms/learningAI 或者掃描下面的二維碼關注本系列文章《人工智能學習筆記》