郝曉芳 馮俊青




【摘 要】現如今構建人工智能或機器學習系統比以往任何時候都更加容易。普遍存在的尖端開源工具如 TensorFlow、Torch 和 Spark,再加上 AWS 的大規模計算力、Google Cloud 或其他供應商的云計算,可以讓我們在短時間內使用筆記本電腦建立起最前沿的機器學習模型。人工智能的核心要素其實是數據,許多單位、企業、公司也都認識到數據民主化是加快人工智能發展的必要步驟。事實上,我們很難用一篇文章來說明哪些開放數據集是有用的,因為證明數據集的有效性是需要大量實踐操作的。所以,教師在中小學書法教育評價中自建書法數據集,是一項必要且有意義的工作。
【關鍵詞】中小學書法評價;機器學習;書法數據集
【中圖分類號】G420? 【文獻標志碼】B? 【文章編號】1005-6009(2021)30-0010-04
【作者簡介】1.郝曉芳,江蘇省鹽城市日月路小學(江蘇鹽城,224005)副校長,高級教師,鹽城市小學語文學科帶頭人,江蘇省小學語文優質課評比特等獎獲得者;2.馮俊青,鹽城工學院(江蘇鹽城,224005)講師,江蘇省“六大人才高峰”高層次人才培養對象。
一、常見的書法開放數據集
目前,在網絡上可以找到很多公開的手寫漢字數據集,其中用得最多的是中國科學院自動化研究所搜集整理的CASIA-HWDB數據集。該數據集可以免費使用,其包含 1020個人書寫的脫機手寫中文單字樣本和手寫文本,數據集是用Anoto筆在點陣紙上書寫后掃描、分割得到的。手寫單字樣本分為三個數據庫:HWDB1.0、HWDB1.1、HWDB1.2,手寫文本也分為三個數據庫:HWDB2.0、HWDB2.1、HWDB2.2。HWDB1.0、HWDB1.1、HWDB1.2總共有3895135個手寫單字樣本,分屬7356類(7185 個漢字和 171個英文字母、數字、符號)。HWDB2.0、HWDB2.1、HWDB2.2總共有5091頁圖像,分割為52230個文本行和 1349414個文字。所有文字和文本樣本均存為灰度圖像(背景已去除),按書寫人的序號分別存儲。
這個數據集作為練習和訓練手寫文字識別深度學習系統是沒有問題的,但是用于對中小學書法作品進行評價就不夠了。數據集的建立最好以中小學生書法作品為采集對象。從2019年開始,在我校教師的共同努力下,共采集了2萬多幅小學生硬筆書法作品,以此來建立專用數據集,期望在書法的深度學習評價領域取得進展。
二、原始圖片采集
在課題研究期間,我校教師共采集了2萬張真實的小學生硬筆書法作品彩色圖片,共6個類別,分別為小學六個年級的硬筆書法作品,如圖1、2、3所示。
三、自建專用數據集
一般自建數據集,首先要對搜集的圖片進行預處理,包括旋轉、裁剪、縮放、轉為張量、正則化等。圖片預處理之后再采用以下幾種方法生成數據集:
1.留出法。
教師可直接將數據集D劃分為兩個互斥的集合:訓練集S和測試集T。用S訓練模型,用T來評估其測試誤差。需要注意的是,劃分時盡可能保持數據分布的一致性,保持樣本類別比例相似??刹捎梅謱硬蓸拥姆绞?。
在使用留出法時,一般要采用若干次隨機劃分、重復進行實驗評估,取平均值作為留出法的評估結果。通常情況下,我們將2/3~4/5的大于一半數量的樣本劃分出來用于訓練。
使用sklearn.model_selection中的train_test_
split( )來分割我們的數據集,其具體參數如下:
x、y代表待劃分數據集所有樣本特征集合(自變量)和標簽集合(因變量)。
test_size用來測試數據集所占的比例,有以下幾種輸入類型:
a.float型,0.0~1.0之間,此時傳入的參數即作為測試集的比例;
b.int型,此時傳入的參數的絕對值即作為測試集樣本的數量;
c.None,需要另一個參數train_size有輸入才生效,此時測試集取為train_size指定的比例或數量的補集;
d.缺省時為0.25,但要注意只有在train_size和test_size都不輸入值時缺省值才會生效。
train_size:基本同test_size,但缺省值為None。一般操作時test_size和train_size輸入一個即可。
random_state:int型,控制隨機數種子,默認為None;隨機數種子其實就是該組隨機數的編號,在需要重復試驗的時候,保證得到一組一樣的隨機數。比如你每次都填1,其他參數一樣的情況下你得到的隨機數組是一樣的。但填0或不填,每次都會不一樣。
隨機數的產生取決于種子,隨機數和種子之間的關系遵從兩個規則:種子不同,產生不同的隨機數;種子相同,即使實例不同也會產生相同的隨機數。
stratify:控制分類問題中的分層抽樣,為了保持split前類的分布,默認為None,即不進行分層抽樣,當傳入為數組時,則依據該數組進行分層抽樣(一般傳入因變量所在列,即y)。
shuffle:bool型,用來控制是否在分割數據前打亂原數據集的順序,默認為True。
返回值:依次返回訓練集自變量、測試集自變量、訓練集因變量、測試集因變量,因此使用該函數賦值須在等號右邊采取x_train,x_test,y_train,y_test的形式。
如下是隨機抽樣時的sklearn實現:
from sklearn.model_selection import train_
test_split
x_train,x_test,y_train,y_test = train_test_
split(x,y,test_size=0.3)
如下是分層抽樣時的sklearn實現:
from sklearn.model_selection import train_
test_split
x_train,x_test,y_train,y_test = train_test_
split(x,y,test_size=0.3,stratify=y)
隨機劃分法還有以下幾種函數可以實現:ShuffleSplit,GroupShuffleSplit,StratifiedShuffle-
Split
2.交叉驗證法。
交叉驗證法(cross validation)是先將數據集D劃分為k個大小相似的互斥子集,即D=D1∪D2∪...∪DK,Di∩Dj=Φ(i≠j),每個子集Di都盡可能保持數據分布的一致性,即從D中通過分層采樣得到。然后每次用k-1個子集的并集作為訓練集,剩下的那一個子集作為驗證集,從而可以進行k次訓練與測試,最終返回的是這k個測試結果的均值。顯然,交叉驗證法的穩定性和保真性在很大程度上取決于k的取值,因此交叉驗證法又稱作“k折交叉驗證”(k-fold cross validation),k最常見的取值為10,即“10折交叉驗證”。這個方法充分利用了所取樣本,但計算比較煩瑣,需要訓練k次,測試k次。
交叉驗證法的一個特例:留一法(Leave-one-out,即LOO),留一法不受隨機樣本劃分方式的影響,因為m個樣本只有唯一的方式劃分m個子集(每個子集包含一個樣本),其優缺點如下:
優點:留一法使用的訓練集與初始數據集相比只少了一個樣本,這就使得在絕大多數情況下,留一法中被實際評估的模型與期望評估的用D訓練出的模型很相似,因此,留一法的評估結果往往被認為比較準確。
缺點:當數據集比較大時,訓練m個模型的計算成本是難以想象的。
我們使用sklearn.model_selection里的函數進行交叉驗證。K折交叉驗證:K_Fold,GroupKFold,Stratified-KFold;
留一法:LeaveOneGroupOut,LeavePGroups-
Out,LeaveOneOut,LeavePOut
3.自助法。
自助法則是使用有放回采樣的方式進行數據采樣的,即我們每次從數據集D中取一個樣本作為訓練集中的元素,然后把該樣本放回,重復該行為m次,這樣我們就可以得到大小為m的訓練集,在這里面有的樣本重復出現,有的樣本則沒有出現過,我們把那些沒有出現過的樣本作為測試集。通過估計m次采樣后每個樣本大約有0.368的概率不被采樣,因此我們可以認為在D中約有36.8%的數據沒有在訓練集中出現過。
優點:這種方法對于那些數據集小、難以有效劃分訓練/測試集時很有用。
缺點:該方法改變了數據的初始分布,可能會導致引入估計偏差。
將創建的數據集拆分為訓練數據集(1.5萬張圖片)和預測數據集(0.5萬張圖片)。其中1.5萬張圖片的訓練數據集又被拆分為5個data_batch,1萬張圖片的預測數據集組成test_batch,如圖4所示。
若數據量充足,通常采用留出法或者k折交叉驗證法來進行訓練/測試集的劃分;對于數據集小且難以有效劃分訓練/測試集時使用自助法;對于數據集小且可有效劃分時最好使用留一法來進行劃分,因為這種方法最為準確。在機器學習中還存在著一種叫作時間序列的數據類型,這種數據的特點是高度的自相關性,前后相鄰時段的數據關聯程度非常高。因此,在對這種數據分割時,不可以像其他機器學習任務那樣進行簡單隨機抽樣的方式采樣,對時間序列數據的采樣不能破壞其時段的連續型,在sklearn.model_selection中我們使用TimeSeriesSplit( )來分割時序數據,其主要參數如下:
n_splits:int型,控制產生(訓練集+驗證集)的數量;
max_train_size:控制最大的時序數據長度。
【參考文獻】
[1]陳康. 超限學習機拓展研究及其腦電分類應用[D].杭州:杭州電子科技大學,2019.
[2]黃海. 基于MDD融合數據集的GPP估算比較研究[D].北京:中國地質大學,2019.
[3]李佳根. 基于深度遷移學習的賴氨酸乙?;稽c預測問題的研究[D].長春:東北師范大學,2019.
[4]周張萍. 面向課堂教學的字幕生成關鍵技術研究[D].廈門:廈門大學,2019.
[5]鄧利平. 基于數據集相似性的分類算法自動選擇研究[D].深圳:深圳大學,2019.
[6]陳磊陽. 基于改進VGGNet的不透水面信息提取應用研究[D].開封:河南大學,2019.
[7]陳遠鵬. 基于長時間可穿戴社交數據集的語音分割方法的研究[D].成都:電子科技大學,2019.