先聲教育 CTO 秦龍 有限的演算法與無限的新意

2021-08-14 07:55:10 字數 4088 閱讀 5856

「在教育領域做好,不是說要把某乙個特定演算法做到極致,而是如何把相對成熟的技術與教育的結合做好。」

《連線》雜誌在總結 2017 年人工智慧領域學術研究現狀時,提到了乙個擔憂,即當前大多數人工智慧技術的發展都極度依賴極少數核心創新演算法的支援,換句話說,演算法這事,也會有「僧多粥少」的問題。的確,神經網路不是卷積神經網路就是迴圈神經網路,處理的物件總逃不過語音、影象、文字,而順理成章的應用思路也就智慧型音箱、人臉識別這麼幾個。因此尚未完全成規模的淺灘市場裡已經擠進了太多的重磅鯊魚型選手,藍海好像只是乙個幻覺,海水一直是深紅色。

我帶著對這一觀點的認同接觸到了秦龍,先聲教育 cto,然後感受到了這家名字裡面甚至沒出現「智慧型」或者「科技」字樣的公司帶來的驚喜:工程師們堪稱「鬼斧神工」地把我們如數家珍的演算法變出了花樣,然後給出了乙個既充分利用了現階段的技術發展水平,同時具有不錯的可擴充套件性的發展路徑。

換句話說,他們的演算法既能夠順利落地,在當下解決實打實的需求,手握日均千萬次的服務請求,同時一旦那些個 ai 演算法今天畫過的餅明天真的能充飢了,也能用同樣的思路再提高乙個台階挑戰更複雜的問題。

這就是「演算法的新意」的重要性。

第乙個新意來自對語音識別的逆向思維。

我們印象裡的語音識別任務,是存在「使用者就是上帝」的準則的:使用者說話會帶著天南地北的口音,所以開發語音輸入法的團隊要收集大量方言資料讓模型「見多識廣」;使用者總是離著麥克風很遠就開始發號施令,所以開發智慧型音箱的團隊要布置麥克風陣列來解決「雞尾酒會問題」。就算在標準資料集上,演算法早就追上然後碾壓了人類,我們一樣會以「不會變通」,「不解決實際問題」為理由淡化它們的成就。

那麼,有沒有可能換一種思路,找乙個不是「演算法遷就善變的人類」,而是「人類模仿標準的演算法」的情景,把不會出錯、不搞特殊化的演算法放在正確答案的位置,不知疲倦地給人類「找茬」?

先聲告訴我們:有,這個答案叫做口語測評。

我帶著雅思口語 8 分的自信試用了「句子跟讀」功能,被演算法輕鬆抓出了三處心服口服的錯誤:

是的,你可以批評 ai 不能「靈活應變」,卻需要承認它永遠「盡職盡責」,它或許做起小工「宛如智障」,但變身為老師卻「有模有樣」。

口語測評背後的神經網路和機器聽寫、智慧型音箱無異,都是基於 lstm rnn 的語音識別模型。評測過程裡,系統會把聲音切割到音素(phoneme)級別,首先判斷「有沒有」,即語音片段中是否含有所有音素,給出完整度得分;然後判斷「對不對」,逐個對發音、重音(stress)位置以及語音語調的正確性進行軟分類,給出準確度打分;最後在句子層面,對照單詞時長的分布資訊、詞之間的停頓、總體的語速,給出流利度得分。經過這一整個流程,因此,這個音素級別的模型能夠給你詳細到音素水平的修改意見,字斟句酌地和你推敲發音。

這裡展示的僅僅是乙個有確定性答案的客觀題,再難一些的非確定性答案半開放性題目也可以類似處理。先聲的業務針對 k12(kindergarten to grade 12

,學齡前到高中)展開,其中非常典型的問題是中考的口頭作文:

第二個新意來自對機器翻譯的另類利用。

其實「平行語料」並不一定侷限於兩種語言,只要是有對應關係的語句對,都可以用「編碼器-解碼器」的機器翻譯思路來解。在學界,這個思路被擴充套件到了問答系統的設計,而先聲選擇了另乙個奇妙的語言對:「有語法錯誤的句子」和「改掉了語法錯誤的正確句子」。於是,作文批改就這樣變成了乙個簡化版的機器翻譯問題。

之所以說是簡化版,是因為作文批改中通常涉及的改動範圍都比較小,沒有機器翻譯中由於不同語言的語法結構差異而產生的長句校準問題。所以,批改不需要注意力機制、甚至不需要非常消耗計算資源的深度神經網路,哪怕是傳統的統計機器翻譯(smt),也能取得不錯的效果。

模擬機器翻譯系統的作文批改並不是唯一一種方式,類似自然語言處理,作文批改也有基於規則的做法和基於統計的 n-gram 做法。

基於規則的做法邏輯簡單:看到名詞就檢查冠詞情況,看到動詞就檢查時態情況,但是需要手寫定義海量的規則,既不優雅也不高效,已經漸漸被摒棄。而基於統計的 n-gram 方法,是神經網路出現之前自然語言處理領域毋庸置疑的統治者,它的一種基本邏輯和完形填空很相似:挖掉由 n 個單詞組成的子句中的乙個,給定周圍的語境,根據語料庫,此處出現概率最高的單詞是哪些?在寫作批改裡,這個邏輯變成了看看每乙個詞周圍的語境,如果乙個詞出現的概率極低,低過了一定的閾值,那麼系統就判定這個詞錯了,並將可能出現概率較高的詞作為修改意見給出。

模擬機器翻譯的模型在可擴充套件性上可以碾壓基於規則的模型,在可控性上也優於 n-gram 模型:如果發現了一處沒有改過來的錯誤,只需要把它和正確的句子一起做成資料對,在下一次迭代過程裡補充進訓練集即可,神經網路可解釋性的弱點就這樣被完美地避開了。

不過,可解釋性並不會成為秦龍的困擾,他坦言,做產品就是「簡單粗暴」:「只要效果提公升了,我不需要解釋。無論是線性模型還是 lstm,哪種方法結果漂亮,我就認同哪個結果。我們不會因為 lstm 聽起來高大上就要用這個,做產品的團隊沒有這種考慮。」

當然,基於翻譯的模型的優點還有很多,可用資料多、語料庫獲取難度低,批改範圍從語法是否正確擴充套件到用詞是否地道,種種不一而足。

即使匯集如此多優點,在寫作批改的路上,工程師們仍然有很長的路要走。語法並不是一篇作文的全部,比語法更重要的是邏輯與表達。考生陳述的觀點是否扣題,論點是否得到了充分的論據支援,論據是否有足夠清晰明確的表達,都是寫作批改系統應該做到,而現有自然語言處理技術尚不能支援的地方。「現在我們還沒辦法通過乙個簡單的神經網路判斷乙個文章是否跑題,更別說分析邏輯性了。」

但是工程師永遠不會被「研究尚不支援」這種理由捆住手腳。先聲的團隊嘗試了多種方案之後,最後做了單獨的模型模擬閱讀理解中的「話題模型」給作文的內容性打分,加權平均得到總評分。

除了引入更多的模型,業界的常見做法自然還有引入更多的資料。

「傳統機器學習方法,例如線性回歸和 svm,飽受詬病的一點是資料量達到一定程度之後,模型複雜度繼續提公升已經沒有用了。而相比之下,深度學習雖然在短期內需要大量資料,但是最終仍然會走向收斂。」秦龍說。

對於寫作批改來說,「大資料」除了「大量文章」之外,還有另乙個維度的指標需要滿足,就是「大量話題」。每個話題下的大量文章好滿足,而大量話題非常難實現。

採訪前,秦龍分享給我一篇**,是用一層卷積層(convolutional layer)、一層 lstm 、一層全連線時序均值(mean over time)的神經網路模型做寫作批改。這是當前非常常見的一類**批改實現方法,然而文中的模型每換乙個話題就要重新訓練一次、改一組引數。泛化能力之低,甚至無法跨過業界「可用」的門檻。「我們做了一些實驗,把卷積層替換成詞嵌入(word embedding),然後取多個詞而不是乙個詞的詞嵌入,lstm 變成雙向等等,效果會好一點。」秦龍如是說,然而「好一點」距離理想中的模型還很遙遠。

「假如有足夠的資料,我們甚至能做出好的無引數(nonparamatric)演算法。可以像 k 臨近演算法一樣,把所有的訓練資料歸為 1-5 分 5 個類別,每個分數段都有在高維空間裡有自己的中心。推理階段只要計算每篇**和每個分數段中心之間的距離,加權平均,就能得到很準確的判分。然而真實世界裡的作文分數也是呈鐘型分布的,5 分和 1 分的樣本都很少,收集資料太難了。」

但是再難似乎也沒對工程師造成什麼消極的影響。他們仍然在有條不紊地迭代著已經成熟的語音測評系統,公升級著日漸成熟的寫作批改系統,然後計畫著更多:

「除了測評類,我們也關注深度知識追蹤(deep knowledge tracing)在自適應學習(adaptive learning)方面的應用,以及其他自然語言處理的方法在新題庫構建方面的能力。」

最後,秦龍以這樣一句話總結了先聲的工作,「在教育領域做好,不是說要把某乙個特定演算法做到極致,而是如何把相對成熟的技術與教育的結合做好。」

先宣告再定義的必要性

類a定義 在a.h中 實現在a.cpp 類b定義 在b.h中 實現在b.cpp 在類a中需要引用類b的型別 而類b也需要引用類a的型別 這樣 如果在類a.h加如 include b.h 在類b.h加入 include a.h 會出現什麼結果呢?這樣 a,b會處在一種無限巢狀的死局之中。編譯器,會報告...

CTO 創業團隊CTO應具備的素質

高速成長的創業企業,經常不過幾年時間,就從三五條槍擴張到幾 十 幾百人甚至更大的隊伍。其間的專案嘗試和取捨,用我一位同事的一句玩笑話形容頗為恰切,像ufo一樣,不知道什麼時候來,也不知道什麼時候走 這是創業成長型企業的常態,也要求研發團隊具有能力柔性,可快速應變。ceo,特別是非技術出身的ceo,往...

CTO能力模型

cto是能力矩陣裡面最均衡的乙個,突出的能力是領導力和文化構造能力,而不是技術實力。公司小的時候,cto可能是公司中技術最強的那個人,但是cto必須要有能力構建乙個文化和體系,迅速能讓比自己技術牛的人 體系搭建能力比自己強的人融入到公司,才可以讓自己到更高層次上來做決策。cto要把控和技術相關的布局...