今天瀏覽國外的網(wǎng)站,,發(fā)現(xiàn)一篇寫得不錯的文章,,結(jié)合作者的觀點,我做了一些注釋,。這是數(shù)據(jù)科學(xué)家阿諾特寫的文章,,他為我們梳理了如何將人工智能理念轉(zhuǎn)化為可運行的軟件的方法及經(jīng)驗。首先,,我覺得智能時代的創(chuàng)業(yè)者有兩種選擇:- AI技術(shù)創(chuàng)業(yè)=api+算法通過自建科學(xué)家團隊,,投入大量研發(fā)資金,形成無人駕駛算法、醫(yī)學(xué)圖像診斷算法,、智能城市人臉識別算法等領(lǐng)先技術(shù),。- AI應(yīng)用創(chuàng)業(yè)=app+算法它并不是去雇傭一大批科學(xué)家生產(chǎn)某項算法,而是整合各種成熟的人工智能技術(shù)和自主研發(fā)的核心算法,,為特定行業(yè)提供全面的解決方案,。我個人比較喜歡的是應(yīng)用方向,提供的是智能產(chǎn)品,,而不是技術(shù)輸出,。所以今天的文章也是幫助大家如何應(yīng)用好AI技術(shù)~- 那么,PoC是什么,?我們先看看PoC相關(guān)的文章是怎么使用這個概念的,。1 軟銀宣布正在開發(fā)跨運營商移動支付服務(wù)的概念驗證(PoC); 2 摩根士丹利聲稱區(qū)塊鏈技術(shù)仍處于“概念驗證(PoC)”階段,; 3 2019年3D打印現(xiàn)狀報告中指出,,概念驗證和原型設(shè)計依然是2019年3D打印的主導(dǎo)應(yīng)用。 可見,,概念驗證(PoC)的目標是測試是否值得花時間在其中,,如果通過概念驗證,意味著可以進入正式的生產(chǎn),、商業(yè)化應(yīng)用階段,。構(gòu)建PoC很難,但是構(gòu)建AI PoC更加困難,,因為它需要大量技能,。- 人工智能系統(tǒng)概述作者舉例,他打算開發(fā)一個對文件進行自動分類的AI系統(tǒng),。AI系統(tǒng)會用“電子發(fā)票”或“待辦事項清單”之類的標簽回答“這是哪種文件”,。收到一個問題:“這是什么樣的文檔?” 在用戶或上下文中獲取額外的信息,,了解“用戶擁有哪種類型的文檔,?” 使用標簽回答問題 “此文檔屬于哪種類型?” 存儲計算結(jié)果:將新文檔添加到數(shù)據(jù)庫 回答用戶的問題:“這是發(fā)票類型的文檔” 作者推薦,,Python中AI PoC的最簡單解決方案是使用Flask和SQL數(shù)據(jù)庫,,但這在很大程度上取決于您的需求和已有的東西。(我現(xiàn)在常使用的是sanic跟mongodb)- 設(shè)計AI模塊例如,,用戶的年齡和位置或電子郵件的正文等各種形式的輸入,。AI要回答的用戶提交的問題。人工智能中有很多不同的任務(wù),。比如計算機視覺中的一些常見任務(wù),,如下圖單物體識別跟多物體識別難度是不一樣的,僅識別物體跟識別并定位物體復(fù)雜度也是不一樣的,。所以我們需要根據(jù)輸入跟輸出確認AI系統(tǒng)的任務(wù)是怎么樣的,。為了幫助你確定構(gòu)建AI的復(fù)雜性, 作者推薦了3個步驟,。
步驟1:確認輸入千萬不要考慮包含很多輸入的解決方案,,例如,如果僅提供用戶的位置可以解決問題的時候,,千萬不要再收集電子郵件的正文等更多的輸入,。避免迷失在將具有不同含義或性質(zhì)的各種輸入混合在一起而最終什么也沒做的情況。步驟2:向量化輸入第二步是預(yù)處理這些輸入,以使其可用于各種算法,。如果是文字,,有種簡單的方案,比如計算單詞在文檔中出現(xiàn)的頻率,;如果是圖像,,則直接使用圖像像素的值即可。注意,,如果進行多層預(yù)處理,,它也可能變得非常復(fù)雜。除此之外,,還需標準化輸入,,比如圖像的大小,色階或格式不同,。步驟3:處理向量像輸入一樣,,輸出也需要“向量化”,。對于分類,,這很簡單:一個類一個字段(標簽)來表示。然后,,我們需要找到一種可以把輸入向量轉(zhuǎn)化為輸出向量的方法(確認AI任務(wù)),。大多數(shù)任務(wù)(例如回歸,分類或推薦)都已有成功的最佳實踐,。 對于PoC,,最簡單的操作是使用預(yù)先實現(xiàn)的算法庫(例如 scikit-learn) 并進行嘗試。尋找簡單且預(yù)先實現(xiàn)的AI算法,。- 一個簡單的例子任務(wù): 判斷文本是法語還是英語,?一個解決方案:
步驟1:確認輸入 如果我們沒有任何來源或其他元數(shù)據(jù),則文本是唯一可能的輸入,。
步驟2:向量化數(shù)據(jù)向量化的一種簡單方法是計算英語單詞和法語單詞是否存在,。我們將使用該語言特定的最常用的停用詞。法語中常用的詞跟英語中常用的詞是不一樣的,。
步驟3:處理向量然后,,我們可以選擇使用最大值進行分類以獲得二進制輸出:True或False。構(gòu)建AI通常是人類專長(商業(yè)知識)和計算機智能(機器學(xué)習(xí))的結(jié)合,。 在此示例中,,作者使用了人類專業(yè)知識來選擇如何構(gòu)建向量(法語和英語停用詞)。然后使用機器學(xué)習(xí)來訓(xùn)練模型以構(gòu)建相應(yīng)的向量(步驟2),,最后從更復(fù)雜的向量中學(xué)習(xí)分類(步驟3),。- 一個更復(fù)雜的例子GitHub: digital-safe-document-classification。
梳理想法并定義PoC的范圍用戶上傳文檔,,AI為用戶提供最佳存放的文件夾路徑,。此系統(tǒng)要支持以下類型的文件:txt,doc,,markdown和pdf,。
步驟1:確認輸入首先,我們需要知道用戶的文件夾,,否則我們將無法回答,。有哪些輸入,我們可以使用呢,?在本例中,,最可靠的輸入可能是文檔的內(nèi)容,。最后,確認使用上傳的文檔和用戶的文件夾里的內(nèi)容進行比較,。步驟2:向量化輸入目前,,我們有不同的輸入格式:pdf,markdown,,txt ...其中pdf是比較麻煩的,。我們可以使用pdftotext庫,,但是它沒有OCR功能,,為了解決這個問題,可以使用Tesseract之類的替代方法,,但是在這個示例中我們暫時不加入OCR功能,。我們想將文本轉(zhuǎn)換為矢量。讓我們看看 scikit-learn庫,,會發(fā)現(xiàn) 文本的 特征提取包,。這正是我們想要的。它有兩個向量化器: 一個基于詞計數(shù),,另一個將被稱為 TfidfVectorizer,。
步驟3:處理向量我們希望將最佳文件夾列表作為最終輸出。如果將文件夾名稱映射到數(shù)字,,看起來很簡單,。但是我們將無法獲得簡單的標準化輸出向量,因為輸出向量的大小將發(fā)生變化,,隨著用戶的文件夾數(shù)量的增加,、變動。因此,,我們不能使用具有固定數(shù)量類的普通分類算法,。我們將需要每次都重新訓(xùn)練模型,并為每個用戶構(gòu)建一個模型,,或者為所有用戶構(gòu)建一個巨大的模型,。于是,,需要尋找更為巧妙,、簡單的實現(xiàn)方式。作者最后采取了一種與搜索引擎相似的方法:對上傳的文檔進行向量化處理,,然后找到用戶所有文檔里矢量與上載文檔最相似的文檔,,使用余弦相似度就可以完成這個過程,然后把最相似的文檔所在的文件夾推薦給用戶,。非常巧妙的處理方式,,把分類問題轉(zhuǎn)變成了相似度計算問題。綜上所述,,解決AI問題可以簡單地分為以下三個步驟:首先,,確認輸入 First, Browsing the relevant inputs 其次,,向量化輸入 Second, Vectorizing the data 最后,處理向量 Third, Processing the vectors
|