如果開始深入研究人工智能應用程序開發過程,首先要了解這些項目與常規應用程序開發項目有何不同。談到人工智能,每個問題都需要一個獨特的解決方案,即使企業已經開發了類似的項目。一方面,有多種預訓練模型和經過驗證的方法可用于構建人工智能。此外,人工智能是獨一無二的,因為它基于不同的數據和業務案例。正因為如此,人工智能工程師通常通過深入研究業務案例和可用數據、探索現有方法和模型來開始這一旅程。
由于這些方面,人工智能項目的創建更接近于科學研究,而不是經典的軟件開發。以下探討一下其原因,以及了解這一現實如何幫助企業準備好為其項目執行這些流程和預算。
人工智能項目分類
人工智能項目可以分為四組:
直截了當的項目:典型的例子包括可以通過應用公共數據集和知名技術來實現的生產就緒模型。例如,ImageNet適用于旨在對圖像進行分類的項目。
知名技術項目:在這些情況下,我們知道該項目所需的適當技術,但我們仍然需要努力收集和準備數據。
需要深入研究的項目:原則上,我們可以弄清楚模型是如何工作的,如何應用現有數據,或者應該采取哪些步驟來訓練模型以完成特定任務。僅憑經驗無法做出任何預測,因為我們不知道模型的行為方式。啟動過程需要額外的測試和案例處理。
生產項目需要額外的努力:這組案例中的數據和模型在實踐中都沒有得到充分的嘗試。
為什么人工智能項目如此不可預測?
人工智能項目開發環境可以被可視化為一個由技術和即用型解決方案組成的三層金字塔。
上層包含適合人工智能使用的現成產品——如第三方庫或經過驗證的公司解決方案。例如,谷歌用于檢測支票欺詐、面部識別和物體檢測的解決方案就是很好的例子。
第二個層次包括描述業務挑戰的新領域。我們可能有合適的模型來解決挑戰,但該技術需要稍作修改或調整才能在實施過程中證明其有效性。該模型應該專門針對其特定用例,這導致了人工智能使用中新利基市場的出現。
科學研究構成低層。科學研究還沒有準備好生產,因為人們不知道這些模型會展示什么結果。這是人工智能系統的一個深層次,盡管可以朝這個方向努力。
人工智能應用程序開發與常規應用程序
使用人工智能進行應用程序開發與非人工智能應用程序沒有根本區別,但包含概念證明(PoC)和演示。和用戶界面(UI)/用戶體驗(UX)階段在演示和人工智能組件準備就緒時開始。
應用程序開發公司在接到創建人工智能驅動的應用程序的任務時要做的第一件事就是詢問客戶的需求和數據:人工智能是產品的核心還是附加組件?這個問題的答案會影響解決方案的復雜程度。
客戶可能不需要最準確和現代的解決方案。因此,重要的是要找出人工智能組件的缺乏是否阻礙了成熟的產品開發,以及在沒有人工智能組件的情況下創建產品是否有任何意義。解決了這個問題后,我們就可以繼續前進了。
一開始,可以將人工智能項目分為兩個子類別:
從頭開始構建的應用程序
人工智能組件集成到現有應用程序中
從頭開始構建人工智能應用程序
因此,如果決定從頭開始開發一個新的人工智能功能應用程序。正因為如此,沒有任何基礎設施來集成人工智能應用程序。這里來到了最重要的問題:人工智能功能開發是否可以像處理通常的應用程序功能一樣處理,例如登錄/注銷或發送/接收消息和照片?
乍一看,人工智能只是用戶可以與之交互的一項功能。例如,人工智能可用于檢測一條消息是否應被視為垃圾郵件,識別照片中臉上的微笑,并在人臉和語音識別的幫助下實現基于人工智能的登錄。然而,人工智能解決方案的開發仍然很年輕,而且還以研究為基礎。這導致人們意識到應用程序的人工智能功能是整個項目中風險最大的部分,尤其是在業務目標需要提出創新且復雜的AI解決方案時。
例如,如果構建一個帶有登錄/注銷屏幕、消息系統和視頻通話的聊天應用程序。視頻通話應支持類似Snapchat的過濾器。以下是風險表和應用程序不同功能復雜性的概述:
聊天應用功能
很明顯,從風險最小化策略的角度來看,從具有最低復雜性和風險的任務開始開發過程是不合理的。人信可能會問,為什么類似Snapchat的過濾器風險最大?這里有一個簡單的答案:要創建一個類似Snapchat的過濾器,必須涉及許多尖端技術,如增強現實(AR)和深度學習,將它們適當地混合在一起,并將它們放在計算資源低的手機上。為此,您必須解決許多非凡的工程任務。
將人工智能組件集成到現有應用程序中
將人工智能功能集成到現有項目與從頭開始構建AI應用程序有一些不同。首先,我們必須使用人工智能增強的現有項目是在沒有任何架構考慮AI功能的情況下開發的,這是一種常見的情況。考慮到人工智能功能是某些數據管道的一部分,我們得出結論,開發AI功能肯定需要至少對應用程序架構進行一些更改。從人工智能的角度來看,現有的應用可以分為以下幾類:
(1) 基于數據庫的項目:
文本處理
推薦系統
聊天機器人
時間序列預測
(2) 非基于數據庫的項目:
圖像/視頻處理
語音/聲音處理
人工智能應用程序開發的主要階段
以下回顧一下典型的人工智能應用程序開發過程是如何分五個階段發展的。
1.業務分析
在第一階段,我們獲得客戶的輸入或愿景,這些輸入或愿景可以作為具有總體想法概述的文檔。在這里,我們開始業務分析過程。為了準備輸入,我們需要考慮業務問題。企業用業務問題解決應用程序開發公司,后者的工作是找到業務和人工智能能力的交點。
例如,在餐館或雜貨連鎖店的情況下,企業主有興趣通過分析采購和銷售來減少食物浪費并實現平衡。對于人工智能工程師來說,這項任務變成了時間序列預測或關系分析任務,其解決方案使人們能夠預測特定數字。
2.機器學習問題確定
下一階段是確定應該討論和解決的機器學習(ML)問題。這必須考慮到人工智能子領域的技術能力,例如計算機視覺、自然語言處理、語音識別、預測、生成人工智能等。
3.數據收集
數據是機器學習的燃料,是人工智能應用程序開發的關鍵步驟。有兩種主要的數據類型——特定的和一般的。一般數據可以從開源數據網站獲得,所以我們要做的就是縮小目標受眾的范圍,把重點放在特定的地區、性別、年齡或其他關鍵因素上。大量通用數據可以簡化流程。
因此,如果客戶有一個基于健身追蹤器活動的應用程序,我們可以應用數據和遷移學習來盡快開始實施。這同樣適用于可以從大量集合開始的圖像分類。
(1)為新項目開發AIPoC
全新人工智能項目的概念證明(PoC)階段應該以AI為中心。這是什么意思?為了滿足風險最小化策略,我們應該從項目中風險最大的部分開始,即AI功能,如果可能的話,不要觸及項目的任何其他功能。概念證明(PoC)階段可以重復多次以達到合適的結果。在取得令人滿意的結果后,可以自由地進入MVP/工業化階段,開發應用程序的所有剩余功能。
(2)為現有項目開發AIPoC
為了使最終用戶可以使用人工智能功能,首先必須開發該功能,然后將其與現有應用程序集成。即,具有應用程序代碼庫、架構和基礎架構。
人工智能功能最令人著迷的地方在于,它們可以在不觸及主要應用程序的情況下進行研究、開發和測試。這產生了一個想法,即人們可以啟動人工智能隔離的概念證明(PoC)而不會對主要應用程序造成風險。這實際上是風險最小化策略的本質。
以下是要遵循的三個步驟:
(1)通過以下方式從現有應用程序中收集數據:
制作數據庫轉儲
收集圖像/視頻/音頻樣本
標記收集的數據或從開源庫中獲取相關數據集
(2)使用之前收集的數據構建一個隔離的AI環境:
培訓
測試
分析
(3)部署訓練成功的人工智能組件:
為當前應用程序架構做準備的變化
針對新AI功能的代碼庫適配
根據項目類型,代碼庫的調整可能會導致:
更改數據庫架構以簡化和加速人工智能模塊對其的訪問
視頻/音頻處理微服務拓撲的變化
更改移動應用程序最低系統要求
4.PoC階段估計
企業主經常向軟件供應商詢問概念證明(PoC)階段可能需要的預算、時間表和工作量。正如上面所展示的,與常規開發過程相比,人工智能項目的特點是高度不可預測。這是由于任務類型、數據集、方法和技術的高度可變性。所有這些條件都解釋了為什么對假設項目進行估算是一項相當困難的任務。盡管如此,我們還是根據項目的復雜程度展示了上述人工智能項目的一種可能分類。
5.新的迭代或生產
第一個概念證明(PoC)之后的下一步可以是概念證明(PoC)的新迭代,并進行進一步的改進或部署。創建新的概念證明(PoC)意味著數據添加、案例處理、錯誤分析等。迭代次數是有條件的,取決于項目。
任何人工智能項目都與風險直接相關。可能面臨來自數據適用性的風險,以及算法或實施風險。為了降低風險,明智的做法是僅在人工智能組件的準確性滿足業務目標和期望時才開始產品開發。