想像一下,您想創建軟體來完成一項任務。有兩種主要方法可以做到這一點,一種中間方法。
代碼方法
第一種方法是對軟體進行程式設計以完成任務,我將其稱為“代碼方法”。在這種情況下,您知道可能發生的所有交互,並在程式中預測它們。最基本的例子是“If then”序列,在該序列中,您告訴計算機,如果發生這種情況,請執行此操作。例如,如果按下此按鈕,則顯示此螢幕。
代碼方法不使用數據,也不涉及訓練。無論數據如何,編程式列都會確定地發生。需要明確的是,可以使用用實際代碼編寫的代碼方法或使用可視化或類似工具創建程式。
火車方法
第二種方法是訓練軟體使用大數據來完成任務,我稱之為“訓練方法”。在這種情況下,您可以編寫一個演算法(如 神經網路),以允許在數據上訓練軟體。然後,您將軟體釋放到數據上,計算機通過反饋循環學習如何完成任務。例如,您可以通過在貓圖片上訓練軟體來教它識別貓。
火車方法當然是 人工智慧的本質。它被稱為大數據方法,因為可用的高品質訓練數據越多,結果就越好。獲得合理結果所需的訓練數據最少。
在最純粹的形式中,訓練方法可以使用非結構化數據,學習本身以無監督的方式發生。這意味著人類根本不會幫助軟體進行訓練。
該演算法將從隱式上下文(而不是顯式標記)中學習給定的圖片是否是貓的。例如,一個平臺的普通使用者可能會以臨時和自發的方式將“貓”一詞放在其照片的描述中,“貓”一詞可能在出現圖片的文章中,或者如果是視頻,人們可能會在貓出現時說出“貓”一詞。當然,所有這些用戶數據都是完全非結構化的(這意味著混亂),演算法需要從這些混亂的數據中找出貓是什麼。
當然,無監督的演算法具有潛在的巨大優勢。這可能意味著人類在標記和分類數據方面將節省大量精力。準確地標記十萬張貓的照片並非微不足道(或就此而言是刺激的)。
問題所在
非結構化訓練方法的一個主要問題是它需要更多的數據。如果數據不可用,則無法以這種方式對其進行訓練。監督方法也需要大量數據,因此會遇到同樣的問題。
當然,這就是為什麼人們正在尋找應用人工智慧的機會,而不是將人工智慧應用於一切的原因。當大量數據可用於訓練時,AI 演算法效果最佳(或者它們可以生成大量數據 - 在遊戲的情況下)。
非結構化、無監督方法的另一個問題是,在手頭的數據上編寫和測試演算法要困難得多。該演算法需要比數據處理更複雜,而不是數據整潔和分類。
監督方法在數據分類方面為過程增加了人類的意圖,但它仍然是一種訓練方法,一種大數據方法。了解演算法的人可以標記數據,並通過這樣做來減少演算法的工作。
小數據方法
有一種方法是代碼和訓練方法之間的混合,我稱之為「小數據方法」。這是我在標題中提到的小數據方法。可以將代碼和訓練技術結合起來,以大幅減少訓練演算法所需的數據量。
對於小數據方法,開發人員編寫交互模型,但隨後在比大數據所需的小得多的數據集上訓練該模型。這導致模型的訓練速度比純訓練方法所需的快得多。
當然,如果編碼模型和訓練數據所需的時間遠少於收集數據和訓練演算法所需的時間,那麼這種小數據方法是有意義的。
在某些情況下,小數據解決方案將允許我們做目前不可行的事情。如果訓練方法所需的數據首先不存在,則小數據方法是唯一可用的方法。在這種情況下,需要在手動創建的數據上訓練演算法。手動創建數以萬計的記錄通常是不切實際的。
人工智慧公司目前正在研究小數據方法,包括 botpress.io,我預計它將成為未來幾年的主流技術。