圖片來源:pixabay
在教育倍受重視的今天,在線教育行業(yè)也發(fā)展的如火如荼。拍照搜題、在線答疑的核心技術(shù)究竟如何?在線教育行業(yè)背后的架構(gòu)又是怎樣?一起來看看吧!
從某種角度說,我們可以做一些補充性,或者說問題降解、難度降解的事情。我們把學(xué)生某種學(xué)習(xí)行為數(shù)據(jù)用一種手段,比如拍照搜題、1V1答疑,還有很多其他的模塊,收集起來,進行建模。然后做成各種各樣的模型,輸送給另外一個大腦。在這個過程中,我們就完成了部分知識或者記憶的傳輸。然后我們想做的是,利用他山之石來讓其他一些學(xué)生可以攻玉,這個就是學(xué)霸君要做的事情。
今天想跟大家分享的有幾點。首先簡單介紹一下,我們的創(chuàng)業(yè)動機,然后是開始的第一步,即搜題的一些核心技術(shù)。另外,我還會講講1V1的實時答疑,這方面也有很多核心技術(shù)。
學(xué)霸君簡介
首先,跟大家簡單分享一下我們學(xué)霸君的簡史。
我們在2012年11月開始創(chuàng)建團隊,摸索了一年,終于在2013年的10月1號懷著忐忑的心情,把第一版的拍照搜題的APP推送上線。我們是非常緊張的,因為那時候,國內(nèi)還沒有太多這樣類型的產(chǎn)品可以參考。它的實際效果、搜索命中率是怎么樣,都是個未知數(shù)。
等到第一版上線的時候,我們發(fā)現(xiàn),用了一大堆非常裸、非常的低效的平平手段創(chuàng)造出來的OCR加搜題的模塊,能夠達到百分之四十幾的搜索命中率。我們覺得這個東西有戲。在那個之后,我們逐步迭代各種版本,到現(xiàn)在已經(jīng)發(fā)布了三個主要的文字識別版本,大概是93%左右的搜索命中率。到目前累計搜索接近20億次。每一道題的搜索,后面緊密連接一個電話號碼,就是學(xué)生注冊的時候填寫的電話號碼。這有什么用呢?等一下我會跟大家分享一下。
在2015年9月1號,我們首推了實時答疑。然后第二波的征程就開始了。中國學(xué)生比較靦腆,很多時候遇到問題不敢問、不想問、不會問。老師的情況是,在二三線城市的老師的薪酬并不是特別高,但是他們有一部分空閑時間。大部分中國的家長都是望子成龍的,愿意付很多的錢投資在小孩的學(xué)習(xí)上,他自身又沒有時間和能力去輔導(dǎo)他。這樣,學(xué)生在有問題的時候,沒法得到有效的解決。在這種情況下,我們就進一步衍生了一個實時答疑的產(chǎn)品,把相隔千山萬水的老師跟學(xué)生之間的距離變成了5秒。
我們的模式是,可以把它理解為在線教育的Uber,用手機APP去呼叫老師,呼叫服務(wù)。學(xué)生遇到題目不懂,任意一個位置的學(xué)生拿起手機來直接就拍,拍了之后,我們就會對他進行識別,會搜索,把答案推出來。甚至有解析,解析非常重要。如果學(xué)生看不懂,呼叫一下老師,老師會跟學(xué)生互動,他會用相應(yīng)的策略去講不一樣的解題思路。
我們用這個APP就做到這樣一個效果:老師拿題就講,學(xué)生不懂就問,問懂為止,真正做到今日難題今日斃。在這樣的模式下,我們所推崇的就是效率的提升,這是我們在學(xué)習(xí)里面經(jīng)常不能得到滿足的一個比較大的問題。怎么樣做到這些呢?
拍照搜題核心技術(shù)
接下來講核心技術(shù)。首先,為什么要去做大量的行為數(shù)據(jù)的采集。行為數(shù)據(jù)的采集實際上是學(xué)霸君在做的真正的內(nèi)容,拍照搜題、1V1答疑也只是采集數(shù)據(jù)的兩種手段。以后,我們還有其他的采集手段會逐步開放出來。2012年、2013年創(chuàng)業(yè)初期,我們思考的一個問題是,怎么樣去捕捉學(xué)生的大腦??刂普摰淖鎺煚斒峭?,他對控制系統(tǒng)提出兩個指標(biāo),一個是可觀,一個是可控。而學(xué)生的大腦是極度不可觀測、極度不可控制的一個系統(tǒng)。那怎么樣去觀察學(xué)生大腦里面的一些東西,并且勾勒出能力缺陷的空間呢?
我們討論了很久,決定從所有的書籍開始入手。怎么樣去采集書籍的內(nèi)容,這個就最終導(dǎo)致我們花了很多精力去做拍照搜題的一個產(chǎn)品。有了一個idea之后,我們非常興奮,但是馬上就遇到一個坎,發(fā)現(xiàn)文字識別實在太難了。那時候我們還沒有專門的歐西亞團隊,都是技術(shù)的小白。我們所搜集到的圖片都是亂七八糟的圖,有非常模糊的,有各種扭曲的。這個是技術(shù)難題,但是我們必須要解決。
我們就開辟一條跑道,這個跑道非常曲折,在這條彎路上,先后探索了印刷體、中文識別、公式識別、英文識別、表格識別、圖像識別、自然語言處理、手寫識別、卷面的版面分析,以及高并發(fā)的圖像的處理框架,這些都構(gòu)成了基礎(chǔ)識別團隊。然后相應(yīng)的團隊也已經(jīng)組建起來。
文字識別上,第一步要做的就是單個文字的識別。我們用的是深度學(xué)習(xí)的技術(shù),從20億的虛擬字庫里面去進行訓(xùn)練,最終的單字識別率現(xiàn)在是99.5%。考慮到里面有很多是模糊字,所以在清晰的情況下,基本上就是四個九到五個九左右級別的精度。這張圖顯示的是基本的技術(shù)結(jié)構(gòu)。模擬神經(jīng)網(wǎng)絡(luò),有若干個輸入,輸入之后有正向的應(yīng)急信號,也有正向的增強信號,也有負(fù)向的抑制信號,所有信號疊加之后,有綜合的輸出。然后我們把所有的網(wǎng)絡(luò)用大概幾千萬或者是幾百萬個單元組合在一起。
分享一個題目。對于一張圖片,我們切割出來,一個字一個字,每個字首先做一次卷集,把它某種方向的一個特征提取出來。第二步做一次下采樣,把它變成一個更小的一個圖。第三步再做一次卷集,然后變成看不太清楚,但是反映了一些文字的高層特征的圖。第四步再做一次下采樣,會變成一個更小的圖,然后做一個全連接,這是一個網(wǎng)絡(luò)結(jié)構(gòu)。最終的輸出實際上是對所有字的自信度的打分。比如說在這個結(jié)果里面,層次是91%的進度,那么這個圖片對應(yīng)的就是層的一個輸出。
然后我們還克服了若干其他的問題?,F(xiàn)在完成了這樣的一個場景,就是我們可以把人眼基本上看不太清楚的東西,變成可以看見的東西。像這張圖里面,現(xiàn)在就可以把它浮現(xiàn)到可讀可識別這樣一個階段,這也是圍繞著圖像處理的一些手段。還有手寫識別,在拍題搜題里面,它的出現(xiàn)概率不會很多,2%左右,但是這一塊的技術(shù),對1V1答疑是一個基礎(chǔ)的技術(shù)。
先看一個結(jié)果。這是我們在收集拍攝、拍照搜題出來的一個結(jié)果,里面的正確率基本上還可以,但是有一個錯誤,這個錯誤實際上導(dǎo)致了,數(shù)學(xué)引擎技術(shù)沒法完全波接這樣一個結(jié)果。如果這一套,這個字也識別對了,負(fù)一識別為負(fù)一的話,這道題在從數(shù)學(xué)引擎上是可解的。我們會進入另外一個環(huán)節(jié),就是對題目畫像。我們會把所有提干進行一個拆解,然后把一些已知因素跟未知因素處理出來,做數(shù)學(xué)、語法素的應(yīng)用,最終把答案推理出來。
說了那么多,我來說一下應(yīng)用。在1V1實時答疑里面,假設(shè)這樣一個場景,老師在講題的時候,上面會不斷顯示,最重要的是類人腦的,或者沒有那么智能,而是一個某種程度上會思考的引擎,首先會分析老師的筆記。老師在上面畫了一張圖,我們會先做圖形的識別,它是一個立方體,有哪些虛線,哪些實線?
接下來會分析。比如說在這里面它寫了幾何法,后面寫了一個向量法,幾何法跟向量法都可以觸發(fā)相應(yīng)的知識圖譜,這個知識圖譜是圍繞著題庫建立起來的另外一個知識體系?;蛘咚麑懥艘粭l式子,在這種情況下,直接就把式子算出來了。
老師在講課的時候,他不是孤身作戰(zhàn),他所講的內(nèi)容,得到我們的知識體系的支撐。然后會分析他需要什么,不斷為他聯(lián)動一些要講的內(nèi)容。還有更重要的是,所有觸發(fā)在分析引擎的時候,我們會把數(shù)據(jù)收集下來,這個才是對我們最有價值的,老師怎么講、用了哪些素材,最終會進入數(shù)據(jù)庫。
第四個,是智能版面分析引擎。接下去我們要做的事情會更有意思。所有的卷子、書籍,首先可以做校正,然后會做智能化的切割,一道題一道題切割出來。如果這道題是可以解的,那我們給它解出來,如果這道題是數(shù)據(jù)庫有的,我們從數(shù)據(jù)庫搜索出來。每道題的頻次、考分、重要性全部分析出來。然后所有學(xué)習(xí)數(shù)據(jù),就可以幫助學(xué)生去更精準(zhǔn)投放時間,避免時間浪費。我們通過圖像的切片,可以把整個任務(wù)切成一小塊一小塊,然后分發(fā)給圖像的云處理機群,做并發(fā)處理,最后把它拼接成綜合的結(jié)果,發(fā)送給相應(yīng)的處理終端。這個是我們云的架構(gòu)。
1V1實時答疑核心技術(shù)
1V1實時答疑實際上可以類比為一個Uber打車的模式。我們把它說成是滴滴叫老師。這個模式一個核心技術(shù),就是讓最合適的老師給一個學(xué)生講題。我們的老師不一定都是國家級優(yōu)秀老師,有很多老師在二三線城市耕耘了很多年,有不錯的講課經(jīng)驗,但是還沒有達到最頂級老師的水平。通過這樣的機制,讓老師不斷去提升在某個垂直知識點的熟練程度,不斷優(yōu)化,不斷優(yōu)化,不斷優(yōu)化。這個老師在某個曲折點上,他能講出比一級老師更嫻熟的內(nèi)容,這是我們的一個核心理念。
在調(diào)度上,我們有各種各樣的挑戰(zhàn)。首先老師的上線時間是不確定的,每一個老師上傳的板塊不一致,各地的考綱不同,講題方式也不同。學(xué)生是隨機提問的,對價格的敏感程度不一樣,一線城市可能愿意多花點錢,二線城市可能對比較優(yōu)惠的策略更感興趣。對于獲得的結(jié)果期待也不同。
所以,我們對各種策略需要有一個智能化的控制。然后大家看到這個系統(tǒng)是簡單的寫照。如果一個學(xué)生有問題,發(fā)起請求,然后進入調(diào)度中心,這個調(diào)度中心會在問題空間里面選取若干個老師,然后發(fā)送,最后老師接單,就是這樣一個流程。
隱藏的技術(shù)就由這個架構(gòu)體現(xiàn)。最底層的是知識模型,包括知識導(dǎo)航、知識圖譜。往上一層,包括學(xué)生畫像跟老師畫像兩塊的用戶畫像,當(dāng)然家長畫像也是非常重要的。還有第三個,往上走就是預(yù)測算法。因為供需關(guān)系必須平衡,不平衡會導(dǎo)致整個系統(tǒng)崩潰,所以這塊也是非常重要的。最上面是偏運籌學(xué)方面的工作,需要對老師的需求跟供應(yīng)進行建模,然后做最優(yōu)化、智能的調(diào)度。
現(xiàn)在我們已經(jīng)收集了接近20億次的學(xué)生提問、幾千萬左右的題目。我們使用自然語言理解,還有深度學(xué)習(xí),對這些題目跟知識做梳理,然后把它整理成樹狀的結(jié)構(gòu)。比如說高中數(shù)學(xué),現(xiàn)在有七大板塊,22個章節(jié),550個知識點,三千多個題型,根據(jù)各地的考綱的不同,會有不同的版本,然后這些版本會導(dǎo)致問題更細(xì)致化。
但是整體的思想是,建成一個樹狀結(jié)構(gòu)的導(dǎo)航體系,可以把它類比為Uber系統(tǒng)的GPS,就用這個去分類各種題目、學(xué)生畫像等。接下來看一下怎么去用這個東西。第一個問題是,學(xué)生畫像是非常有意思的問題,學(xué)生是千人千面,沒有兩個學(xué)生是完全一樣的,但是我們通過某種統(tǒng)計規(guī)律可以抽象出一些共性,然后就可以用來做很多事情。
這張圖給大家看一下我們怎么去分析學(xué)生的共性,怎么去用這種拍照搜題數(shù)據(jù)。每個學(xué)生在系統(tǒng)里面呈現(xiàn)出很多的數(shù)據(jù),這個數(shù)據(jù)就是我們非常大的財富,然后不斷去挖掘里面隱含的信息。首先用剛才說的那個GPS系統(tǒng),就是知識的建模,把每一個題目的知識點抽樣出來,變成一個輸入,接上時間軸,把它扔進一個深度神經(jīng)網(wǎng)絡(luò),這時候就可以抽取學(xué)生的各種特征。然后接下去,我們可以做一些分析。
舉個例子,可以看到學(xué)生的行為有個時間軸。學(xué)生的行為實際上是動態(tài)變化的,不是固定的,今天學(xué)代數(shù),明天學(xué)幾何,會不斷變化,學(xué)生所問的問題,或者說需求的問題不斷變遷。那在這種情況下,有一個現(xiàn)象是可以利用的,就是學(xué)生之間的共性。比如說A學(xué)生,問了若干系列的問題,B學(xué)生問了若干系列的問題,后來來了個C學(xué)生,我們發(fā)現(xiàn)A學(xué)生B學(xué)生的共性非常強,那C學(xué)生接下去想問的問題或想了解的內(nèi)容,可以通過前面A學(xué)生B學(xué)生所形成的聚集去預(yù)測,這個對于分配老師、調(diào)度老師的策略上是非常有幫助的。
老師的畫像跟學(xué)生的畫像是完全不一樣的兩個問題。老師沒有學(xué)習(xí)階段的時間軸,很多老師各個年級都能講,但是他所講程度不太一樣。為了對老師進行適當(dāng)?shù)姆诸悾覀冇昧诉@樣的策略,就是競爭神經(jīng)網(wǎng)絡(luò)。我們把所有的老師,大概有幾千到接近一萬老師,映射到一張地圖,這是數(shù)據(jù)計算出來的地圖,用類似于商級來區(qū)分不同老師的分類,每種顏色代表著老師的一個類,這個只是龐大地圖里面的一小塊。
比如,綠色代表著老師會講立體幾何,紅色代表會講立方體這一塊,等等。對所有老師建模之后,注冊一個新的老師,他講若干道題之后,開始對這個老師進行定位。比如,他講了立體幾何,可能還講了其他一些題,但是他立體幾何比較擅長,那最終會把他定位到這一個區(qū)域里面,然后不斷讓他講這塊內(nèi)容。這個就是我們老師畫像的應(yīng)用,這體現(xiàn)了需求和供應(yīng)兩方面。
需求供應(yīng),我們需要去量化。接下一個核心技術(shù)就是需要去預(yù)測,每一個知識點、每一個知識板塊,有多少的供應(yīng)量,有多少的需求量,可以去設(shè)計老師的人源池的分配。每個地區(qū)供需關(guān)系不太一樣,這導(dǎo)致一個非常有意思的數(shù)學(xué)問題,就是龐大數(shù)據(jù)集多時序的一個預(yù)測。每個老師都有一個相應(yīng)講題的頻次、數(shù)量等,幾個月下來,基本上可以估出它的模式,然后就可以對每個老師的上線時間進行預(yù)測,對講題的供應(yīng)能力進行預(yù)測。
最后,根據(jù)歷史結(jié)果來估算老師未來的服務(wù)能力,然后可以對不同老師的能力進行排序,有需求的時候,會根據(jù)這種排序去進行動態(tài)的調(diào)度。這里面就有啟發(fā)性搜索的算法。接下來我們就講精益工程里面經(jīng)常用的庫存模型,把它用到1V1時答疑里面去,這個模型叫做Make to Order,就是按需求去生產(chǎn)。
生產(chǎn)系統(tǒng)里面基本上有三個主要角色。首先是協(xié)調(diào)管理和調(diào)度的人員,我們現(xiàn)在是用95%的自動化加5%的人工去進行協(xié)調(diào)管理,其目的就是為了調(diào)整老師跟學(xué)生之間的匹配關(guān)系。老師答疑的供應(yīng),可類比為庫存,整個系統(tǒng)不斷生產(chǎn),老師會不斷出來,如果庫存積壓的話,有庫存成本。
學(xué)生答疑的需求,可類比為市場需求,如果市場的需求不能得到滿足的話,那收入就會流失,如果需求太少的話,整個系統(tǒng)也跑不起來。這樣的系統(tǒng)建立一個數(shù)學(xué)模型,X代表著庫存大小,γ 1、γ 2代表著老師到來的頻次、學(xué)生到來的頻次。這就是一個數(shù)學(xué)問題了。
我們把它建成一個Markov過程,這是實實在在放在后臺調(diào)度的一個模塊。然后可以把Markov過程想象成為狀態(tài)機,有不同的狀態(tài),每個狀態(tài)可以互相跳變,但是這個跳變有一定的概率。我們可以去模擬各種各樣稀奇古怪的分布,老師的分布不一定是正態(tài)分布或者指數(shù)分布那樣工正,可能是雙峰值、后尾的等。為了預(yù)測比較好的準(zhǔn)確度,用了非常特殊的一個分布區(qū)域?qū)λM行建模。
建模之后,我們就可以做隊列的模型。老師進來,服從這樣一個Markov過程,學(xué)生到來,服從另外一個Markov過程,它的參數(shù)是不一樣的。學(xué)生過來之后,如果有老師在等待隊列里面,他們就可以匹配,形成服務(wù)的一個對接,這就是一個好的開始。有了剛才Markov過程,接下去就是列出一大堆平衡方程,總共大概有幾十萬到一百萬的平衡方程,基本上是描述各種狀態(tài)之間的跳變。
然后再加歸一化條件,所有的概率的核等于1。接下去就可以解線性方程,最終得到一個非常有意思的結(jié)果,就是隊列的一個分布、老師的概率,隊列里面有兩個老師的概率,有三個老師的概率,再細(xì)化一點,就是隊列里面輔導(dǎo)立體幾何的老師在等待的概率、輔導(dǎo)函數(shù)的五個老師在等待的概率。就可以幫我們推導(dǎo)運籌學(xué)的收益優(yōu)化的模型。
這是非常簡單的版本,它主要包括幾個模塊。一個是答疑總量,這個是正向的,答疑總量越大,我們收益率越高,還有答疑評分越高的話,基本上來說收益會更好。一個是提問流失,是負(fù)向的,如果流失的提問,我們效益要緊逼。老師閑置也是負(fù)向的,這個也會打擊老師的積極性,然后再減去其他的成本,實際上還有很多很多其他的因素。
老師的實際可調(diào)配的量是小于最大的供給量的,即,最大不可能超過注冊老師的供應(yīng)量。然后就有一個非常有意思的調(diào)度策略,實際上相當(dāng)于滴滴司機排班這樣的策略,但是我們對老師有一定的干預(yù)能力。我們會從需求上預(yù)測,大概在某個時間點需要多少老師,把它切為若干時間片,每個時間片需要多少老師。最后,會向老師推送一些信息,這個時間點你上線,有更多的單子,那老師就會來。這些信息最終歸結(jié)為最優(yōu)化的問題,可以用很多的算法。
簡言之,我們現(xiàn)在用了遺傳算法在做在線的優(yōu)化。遺傳算法簡單時顯,實際上就是通過不斷的迭代、計算,把一些解不斷優(yōu)化,X1、X2、X3到X8就代表著每一個時間的一個片斷的一個排單量,然后通過兩種算子,一種是交叉,一種是編譯,不斷去形成更優(yōu)的排班。迭代很多次計算之后,總體的收益函數(shù)會不斷上升,直到比較好的結(jié)果。這個就是我們最終的排班策略。
為什么排班策略很重要,為什么調(diào)度策略非常重要?非常簡單,這是一個速度決定著生死的市場,如果沒法在很短的時間內(nèi)聚集足夠有用的數(shù)據(jù)量,我們是完不成數(shù)據(jù)采集的最終目標(biāo)的。如果爬坡速度夠快,那可以有足夠的數(shù)據(jù)量,去推進下一步的業(yè)務(wù),把數(shù)據(jù)全部用起來,可以做很多事情。如果沒有的話,基本上到后面就是會走向消亡,這個是非常殘酷的一個現(xiàn)實。
學(xué)霸君在收集20億左右拍照搜題的題目之后,接下去的目標(biāo)是一千萬、非常高質(zhì)量的、1V1的視頻樣本。1V1視頻樣本是非常特殊的數(shù)據(jù),它只有一個人講、一個人問,然后只針對一道題。像手機講話,它非常垂直、非常精準(zhǔn),有大量的數(shù)據(jù)在圍繞它做一個標(biāo)注,比如有圖庫做支撐,有圖譜知識做支撐,拿這些東西去做語音的訓(xùn)練也好,去做知識的建模也好,都是非常有價值的。
最后能夠拿到現(xiàn)在國內(nèi)還沒有人擁有的垂直領(lǐng)域的教學(xué)模型。我們就把它放到計算系統(tǒng)里面。這個計算系統(tǒng)分為兩層。第一層是CPU跟GPU計算機群,現(xiàn)在很多的最優(yōu)化機器學(xué)習(xí)都放在這樣機群里面去算。但是機器不是萬能的。我們搭建了人工自有系團隊,去標(biāo)注各種各樣的數(shù)據(jù),然后綜合起來。我們會不斷去提煉里面的模型。
數(shù)據(jù)庫主要有三個,一是題庫、學(xué)生庫、老師庫,二是更高層的拍題的一些記錄,三是1V1講題記錄,這是更高層的數(shù)據(jù)記錄。我們的數(shù)據(jù)挖掘工程師,不斷去做各種各樣的計算流,把它扔到這個平臺里,從各個側(cè)面去挖這樣的數(shù)據(jù),比如說哪些題是更高頻的、這個學(xué)生需要問什么問題、這個學(xué)生以后三個月需要學(xué)習(xí)什么,這是知識性學(xué)習(xí)的問題,等等。還有一些報表的結(jié)果。
小結(jié)
最后總結(jié)一下,學(xué)霸君是做什么的?我們是一家做教育行為數(shù)據(jù)采集的公司,采集的手段有圖像識別、手寫識別、工人識別、文檔分析,還有音視頻數(shù)據(jù)的采集,還有識別。這是第一步。第二步,就是做分析。我們用機器學(xué)習(xí)和深度學(xué)習(xí)去做各種題目的建模、人物的建模,還有整個調(diào)度模式的建模,然后把它用到體系里面,不斷推高數(shù)據(jù)采集的速度。最終,我們把它用在培訓(xùn)上,會跟其他人合作,或者是會有一些相應(yīng)的業(yè)務(wù)。
實際上我們是開數(shù)據(jù)挖掘機的。
本文轉(zhuǎn)載自InfoQ,作者陳銳鋒。
芥末堆注:學(xué)霸君方面表示,目前學(xué)霸君的用戶為5500萬,日活350萬,每天解決1800萬道難題,已經(jīng)累計為用戶答疑超過40億次。
2、芥末堆不接受通過公關(guān)費、車馬費等任何形式發(fā)布失實文章,只呈現(xiàn)有價值的內(nèi)容給讀者;
3、如果你也從事教育,并希望被芥末堆報道,請您 填寫信息告訴我們。