帶你識(shí)別AI數(shù)據(jù)集的各種面孔 (AI 從業(yè)萬(wàn)字干貨)
上一篇文章,我們講了AI神經(jīng)網(wǎng)絡(luò)的優(yōu)化,里面提到要用很多AI數(shù)據(jù)集才能完成訓(xùn)練。這篇文章,我們就來(lái)講下AI數(shù)據(jù)集的數(shù)個(gè)面孔,希望能一次給大家說(shuō)明白。
歡迎一起揭秘AI的世界,相信對(duì)AI略有了解的朋友已經(jīng)知道,AI的智能是因?yàn)榈讓邮且慌忠慌臄?shù)據(jù)在AI大模型的后面支撐運(yùn)行,成為了基石,造就了AI。
如果讀過(guò)我前面幾篇AI系列文章的朋友,也會(huì)知道,AI的神經(jīng)網(wǎng)絡(luò)在機(jī)器學(xué)習(xí)中發(fā)揮了巨大的作用,而神經(jīng)網(wǎng)絡(luò)的訓(xùn)練也是基于數(shù)據(jù)來(lái)完成的。所以,接上篇和大家聊了如何訓(xùn)練神經(jīng)網(wǎng)絡(luò)的全過(guò)程技術(shù)原理后,這次我們來(lái)聊聊AI中的基石:數(shù)據(jù)集。
如果對(duì)AI神經(jīng)網(wǎng)絡(luò)的訓(xùn)練優(yōu)化部分感興趣的朋友,可以看我的這篇文章《(萬(wàn)字干貨)如何訓(xùn)練優(yōu)化“AI神經(jīng)網(wǎng)絡(luò)”模型》
由于數(shù)據(jù)集部分要說(shuō)的內(nèi)容比較多,一篇文章上萬(wàn)字已經(jīng)是大部分人的閱讀上限了,但是吧,為了減少文字去壓縮內(nèi)容也非我本意。所以本次,為了說(shuō)清楚數(shù)據(jù)集,又不想造成過(guò)長(zhǎng)的閱讀壓力,我會(huì)將近期寫的數(shù)據(jù)集的內(nèi)容拆分成多篇文章發(fā)布。
本篇文章一萬(wàn)字左右,預(yù)計(jì)閱讀時(shí)間:10分鐘,若是碎片時(shí)間不夠,建議先收藏后看,便于找回。
照例,開篇提供文章結(jié)構(gòu)導(dǎo)圖,方便大家在閱讀前總攬全局,有大致的畫面框架。
一、什么是AI數(shù)據(jù)集?
在機(jī)器學(xué)習(xí)領(lǐng)域中,數(shù)據(jù)集是一組經(jīng)過(guò)組織和整理的數(shù)據(jù),是用于AI模型的訓(xùn)練、驗(yàn)證和測(cè)試的數(shù)據(jù)集合,其質(zhì)量、多樣性和數(shù)據(jù)規(guī)模會(huì)直接影響著AI模型的性能和泛化能力。
數(shù)據(jù)集通常包含大量的數(shù)據(jù)點(diǎn),每個(gè)數(shù)據(jù)點(diǎn)代表一個(gè)樣本或?qū)嵗€有與其相關(guān)的特征和標(biāo)簽。特征是用來(lái)描述數(shù)據(jù)點(diǎn)的變量,而標(biāo)簽則是與數(shù)據(jù)點(diǎn)相關(guān)的輸出變量。
例如,在圖像識(shí)別任務(wù)中,數(shù)據(jù)集可能包括許多帶有不同顏色、形狀和大小的圖片,每張圖片的特征可以是像素值,而標(biāo)簽則表示圖片中物體的類別。
如果數(shù)據(jù)集存在錯(cuò)誤、偏差或噪聲,AI模型在學(xué)習(xí)過(guò)程中可能會(huì)產(chǎn)生錯(cuò)誤的理解和預(yù)測(cè),從而降低其性能。
如果數(shù)據(jù)集包含的數(shù)據(jù)點(diǎn)過(guò)于相似或者缺乏代表性,AI模型可能會(huì)出現(xiàn)過(guò)擬合的問(wèn)題,即在訓(xùn)練數(shù)據(jù)上表現(xiàn)良好,但在新的、未見過(guò)的數(shù)據(jù)上表現(xiàn)不佳。關(guān)于數(shù)據(jù)擬合問(wèn)題的討論,《萬(wàn)字干貨)如何訓(xùn)練優(yōu)化“AI神經(jīng)網(wǎng)絡(luò)”模型?》中有更詳細(xì)的描述,就不在此贅述了。
一般來(lái)說(shuō),數(shù)據(jù)集規(guī)模越大,AI模型的學(xué)習(xí)效果越好。這是因?yàn)榇笠?guī)模的數(shù)據(jù)集可以提供更多的信息,幫助AI模型學(xué)習(xí)到更多的特征和規(guī)律。然而,數(shù)據(jù)集規(guī)模的增加也會(huì)帶來(lái)計(jì)算資源和時(shí)間的挑戰(zhàn)。
可見,我們?cè)趯?shí)際應(yīng)用中,需要根據(jù)任務(wù)的特性和需求,選擇合適的數(shù)據(jù)集,并對(duì)其進(jìn)行適當(dāng)?shù)念A(yù)處理和增強(qiáng),這樣可以提高AI模型的訓(xùn)練效果和泛化能力。
二、AI數(shù)據(jù)集長(zhǎng)什么樣?什么格式?
為了適應(yīng)不同場(chǎng)景,數(shù)據(jù)也需要變成合適的模樣(也就是格式),便于AI模型可以直接運(yùn)用。因此,我們常常需要處理各種格式的數(shù)據(jù)集,也需要對(duì)常見的格式有一些了解,知曉其適用的場(chǎng)景,有哪些特點(diǎn)和不足之處,這樣我們?cè)诿鎸?duì)各種數(shù)據(jù)集和應(yīng)用場(chǎng)景時(shí),就能做到“心中有數(shù)”。
數(shù)據(jù)集常見的格式主要有:CSV(逗號(hào)分隔值),JSON(JavaScript對(duì)象表示法),XML(可擴(kuò)展標(biāo)記語(yǔ)言),HDF5(層次數(shù)據(jù)格式5),Parquet(列式存儲(chǔ)),xlsx、xls等格式的Excel文件。
既然知道了有那么多格式,我們就分別根據(jù)這些常用的格式進(jìn)一步展開,先介紹這些格式的基本定義,為了便于大家理解,會(huì)舉一個(gè)簡(jiǎn)單的例子,還會(huì)再說(shuō)說(shuō)什么場(chǎng)景下適合用什么數(shù)據(jù)格式來(lái)存儲(chǔ)和處理數(shù)據(jù),這些格式在實(shí)際運(yùn)用中又會(huì)暴露出哪些劣勢(shì)。
1. CSV(逗號(hào)分隔值)
這是最常見的一種數(shù)據(jù)格式,是一種簡(jiǎn)單的文本格式,每行表示一個(gè)樣本,每列表示一個(gè)特征,各個(gè)元素之間用逗號(hào)分隔。
以下是一個(gè)簡(jiǎn)單的CSV文件的例子:
在這個(gè)例子中,每一行代表一個(gè)數(shù)據(jù)點(diǎn)(一個(gè)人),而每列則表示該數(shù)據(jù)點(diǎn)的一個(gè)特征(姓名、年齡、城市)。逗號(hào)用于分隔不同的數(shù)據(jù)值。
CSV格式的數(shù)據(jù)文件結(jié)構(gòu)清晰,易于理解和操作。每個(gè)數(shù)據(jù)記錄都被逗號(hào)分隔開,每一列數(shù)據(jù)都是獨(dú)立的,我們可以很容易地通過(guò)簡(jiǎn)單的文本編輯器或者表格軟件來(lái)查看和編輯數(shù)據(jù)。
我們?cè)贏I數(shù)據(jù)集的應(yīng)用中,什么情況下會(huì)選擇用CSV格式存儲(chǔ)或處理數(shù)據(jù)?
【當(dāng)數(shù)據(jù)足夠簡(jiǎn)單又結(jié)構(gòu)化表示時(shí)】
當(dāng)數(shù)據(jù)集的結(jié)構(gòu)相對(duì)簡(jiǎn)單,又是結(jié)構(gòu)化的形式,每一行表示一個(gè)數(shù)據(jù)點(diǎn),每一列表示一個(gè)特征或?qū)傩?,用CSV格式就是一個(gè)很不錯(cuò)的選擇,直觀且方便。
【當(dāng)數(shù)據(jù)需要被多人共享時(shí)】
CSV文件是一種通用的文本格式,易于共享和協(xié)作。在多個(gè)團(tuán)隊(duì)或研究者之間傳遞數(shù)據(jù)時(shí),CSV提供了一種簡(jiǎn)單的、不依賴特定軟件的共享方式,很常用。
【當(dāng)數(shù)據(jù)需跨平臺(tái)使用時(shí)】
CSV格式具有跨平臺(tái)的優(yōu)勢(shì),幾乎所有的數(shù)據(jù)處理工具和編程語(yǔ)言都支持CSV文件的讀寫。項(xiàng)目成員在不同環(huán)境和工具中使用數(shù)據(jù)非常方便。
【當(dāng)數(shù)據(jù)集規(guī)模比較小時(shí)】
對(duì)于規(guī)模相對(duì)較小的數(shù)據(jù)集,CSV是一個(gè)輕量級(jí)的選擇,性價(jià)比高。它不會(huì)占用過(guò)多磁盤空間,所以非常方便我們傳輸、存儲(chǔ)和處理數(shù)據(jù)。
【為了方便查看和編輯時(shí)】
CSV文件是純文本文件,可以用文本編輯器輕松查看和編輯,這很方便我們隨時(shí)查看或編輯數(shù)據(jù)。
我們?cè)贏I數(shù)據(jù)集的實(shí)際應(yīng)用中,也并不是優(yōu)先就用CSV格式,它也會(huì)暴露出一些劣勢(shì)。
【文件的大小會(huì)限制數(shù)據(jù)的處理能力】
由于CSV文件中的數(shù)據(jù)是以文本形式存儲(chǔ)的,這意味著當(dāng)數(shù)據(jù)集非常大時(shí),CSV文件的大小也會(huì)相應(yīng)地增大。這可能會(huì)導(dǎo)致內(nèi)存不足,從而影響數(shù)據(jù)處理的效率和速度。
此外,對(duì)于大型數(shù)據(jù)集,可能需要將數(shù)據(jù)分割成多個(gè)CSV文件進(jìn)行處理,這會(huì)增加數(shù)據(jù)管理的復(fù)雜性。
【不適用于復(fù)雜數(shù)據(jù)結(jié)構(gòu)】
在實(shí)際應(yīng)用中,我們可能需要處理包含多種類型數(shù)據(jù)(如數(shù)值、文本、日期等)的數(shù)據(jù)集。然而,CSV格式只能簡(jiǎn)單地將這些數(shù)據(jù)以字符串的形式存儲(chǔ)在一起,無(wú)法清晰地表示數(shù)據(jù)之間的層次關(guān)系和關(guān)聯(lián)性。
可見,CSV只能適用于簡(jiǎn)單的表格形式的結(jié)構(gòu)化數(shù)據(jù)。對(duì)于包含復(fù)雜嵌套結(jié)構(gòu)、多層次關(guān)系或大量元數(shù)據(jù)的數(shù)據(jù)集,CSV格式不夠靈活。
【數(shù)據(jù)不規(guī)范就會(huì)出錯(cuò)】
由于CSV文件中的數(shù)據(jù)是以逗號(hào)分隔的,因此如果某個(gè)字段中包含了逗號(hào),或者字段的值中包含換行符等特殊字符,那么這個(gè)字段的值就會(huì)被錯(cuò)誤地解析為多個(gè)字段。而且這種情況在實(shí)際應(yīng)用中是非常常見的,卻很難通過(guò)簡(jiǎn)單的方法來(lái)避免或修復(fù)。
在我們了解了CSV格式后,在實(shí)際應(yīng)用時(shí),面對(duì)需要處理的一堆數(shù)據(jù)時(shí),我就可以知道什么時(shí)候用CSV格式,什么時(shí)候不用。
比如,只是數(shù)量較少又簡(jiǎn)單的用戶表,含有用戶的姓名、年齡、地址等基礎(chǔ)文本信息的話,可以方便地存儲(chǔ)在CSV文件中。如果數(shù)據(jù)集包含時(shí)間序列或地理空間信息,數(shù)據(jù)結(jié)構(gòu)又比較復(fù)雜,CSV格式就不合適了。
2. JSON(JavaScript對(duì)象表示法)
JSON基于JavaScript的語(yǔ)言標(biāo)準(zhǔn),是一種輕量級(jí)的,用于存儲(chǔ)和交換數(shù)據(jù)的文本格式,支持層次結(jié)構(gòu)和復(fù)雜的數(shù)據(jù)類型,有著優(yōu)秀的結(jié)構(gòu)化數(shù)據(jù)表示能力。
在AI數(shù)據(jù)集中,往往存在復(fù)雜的信息層次和多層嵌套的結(jié)構(gòu),而JSON的樹狀表達(dá)方式非常適合清晰地呈現(xiàn)這些數(shù)據(jù)之間的關(guān)系。
以下是一個(gè)簡(jiǎn)單JSON格式的例子:
在這個(gè)JSON中,每個(gè)對(duì)象表示一個(gè)數(shù)據(jù)點(diǎn),例如動(dòng)物。對(duì)象包含各種特征(如顏色、大小、棲息地)以及一個(gè)標(biāo)簽(表示動(dòng)物的類別)。這種結(jié)構(gòu)可以很好地表示復(fù)雜的數(shù)據(jù)集。
我們?cè)贏I數(shù)據(jù)集的應(yīng)用中,什么情況下會(huì)選擇用JSON格式存儲(chǔ)或處理數(shù)據(jù)?
【當(dāng)需要多語(yǔ)言、多平臺(tái)應(yīng)用時(shí)】
JSON具備跨平臺(tái)兼容性。在多語(yǔ)言、多平臺(tái)的AI應(yīng)用中,我們常常需要進(jìn)行數(shù)據(jù)交換。JSON格式可以在不同編程語(yǔ)言和操作系統(tǒng)之間實(shí)現(xiàn)靈活通用。這種特性在構(gòu)建跨領(lǐng)域或多模塊的AI系統(tǒng)時(shí)顯得尤為重要。
【在Web應(yīng)用和API開發(fā)中】
由于JSON在JavaScript中的原生支持,以及易于解析和生成的特性,JSON成為了Web服務(wù)和應(yīng)用程序之間進(jìn)行數(shù)據(jù)傳輸?shù)氖走x格式。
在與Web生態(tài)系統(tǒng)集成的場(chǎng)景下,選擇JSON有助于確保數(shù)據(jù)的順暢交流,為系統(tǒng)的互聯(lián)互通提供了便捷途徑。
【適用于輕量級(jí)應(yīng)用中】
JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,結(jié)構(gòu)相對(duì)簡(jiǎn)單,由鍵值對(duì)構(gòu)成,易于理解和編寫。也因?yàn)榇颂匦裕琂SON在網(wǎng)絡(luò)傳輸中占用的帶寬相對(duì)較小。
如果遇到一些對(duì)數(shù)據(jù)量要求不大的輕量級(jí)應(yīng)用或移動(dòng)應(yīng)用,JSON是不錯(cuò)的選擇,在這類應(yīng)用中JSON可以減少數(shù)據(jù)傳輸?shù)呢?fù)擔(dān),提高系統(tǒng)的運(yùn)行效率。
有利也有弊,我們?cè)贏I數(shù)據(jù)集的實(shí)際應(yīng)用中,JSON格式自然也會(huì)暴露出一些劣勢(shì)。
【數(shù)據(jù)冗余】
JSON格式的數(shù)據(jù)通常包含許多嵌套的結(jié)構(gòu),這可能導(dǎo)致數(shù)據(jù)的冗余。例如,如果一個(gè)對(duì)象的屬性是另一個(gè)對(duì)象的列表,那么這個(gè)屬性可能會(huì)被重復(fù)多次,導(dǎo)致數(shù)據(jù)的冗余,在存儲(chǔ)和傳輸時(shí)也會(huì)占用更多的空間和帶寬。
【解析與生成相對(duì)較慢】
由于JSON是一種文本格式,解析時(shí)需要進(jìn)行字符的逐個(gè)解析,通常需要消耗更多的計(jì)算資源和時(shí)間。而二進(jìn)制格式則可以直接通過(guò)字節(jié)進(jìn)行快速解析。因此,JSON的解析和生成相對(duì)于二進(jìn)制格式來(lái)說(shuō),會(huì)更加耗時(shí)。
正因?yàn)镴SON文件不支持直接對(duì)數(shù)據(jù)進(jìn)行高效的壓縮和解壓縮操作。相比之下,當(dāng)需要對(duì)大量數(shù)據(jù)進(jìn)行快速讀寫操作時(shí),使用JSON格式并不合適,二進(jìn)制格式可能會(huì)更加高效。
【處理復(fù)雜嵌套數(shù)據(jù)會(huì)比較麻煩】
由于JSON文件中的數(shù)據(jù)是以樹形結(jié)構(gòu)組織的,當(dāng)數(shù)據(jù)層次較深,存在大量嵌套和重復(fù)的信息時(shí),JSON文件可能變得較為臃腫,在讀取或?qū)懭肭短讛?shù)據(jù)時(shí)需要進(jìn)行遞歸操作。這可能會(huì)導(dǎo)致性能下降并增加程序的復(fù)雜性。
BTW,遞歸是一種編程技巧,它是通過(guò)函數(shù)自我調(diào)用的方式來(lái)解決問(wèn)題的一種方法。基本思想是將一個(gè)問(wèn)題分解為若干個(gè)相似的子問(wèn)題,然后逐個(gè)解決這些子問(wèn)題,最后將這些子問(wèn)題的解合并得到原問(wèn)題的解。如果對(duì)這方面感興趣的朋友,可以自行了解。
3. XML(可擴(kuò)展標(biāo)記語(yǔ)言)
XML是一種標(biāo)記語(yǔ)言,用于存儲(chǔ)和傳輸結(jié)構(gòu)化信息,適用于各種數(shù)據(jù)類型。它的主要特點(diǎn)是允許用戶自定義標(biāo)簽,這些標(biāo)簽可以用來(lái)描述數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容。
以下是一個(gè)簡(jiǎn)單的XML示例,表示一個(gè)包含不同信息的數(shù)據(jù)集:
在這個(gè)例子中, <dataset> 元素包含多個(gè) <sample> 元素,每個(gè) <sample> 元素包含一個(gè)標(biāo)識(shí)符 <id> 、文本 <text> 和標(biāo)簽 <label> 。
XML和JSON有一些相似之處,但依舊有其獨(dú)特的優(yōu)勢(shì)。雖然在某些場(chǎng)景下逐漸被JSON取代,但在某些應(yīng)用中,仍然被廣泛使用著。
我們?cè)贏I數(shù)據(jù)集的應(yīng)用中,什么情況下會(huì)選擇用XML格式存儲(chǔ)或處理數(shù)據(jù)?
【當(dāng)數(shù)據(jù)結(jié)構(gòu)復(fù)雜時(shí)】
由于XML的樹狀結(jié)構(gòu),它能夠自然地表達(dá)復(fù)雜的數(shù)據(jù)關(guān)系,包括嵌套、多層次結(jié)構(gòu)等。因此,XML非常適合表示具有復(fù)雜關(guān)聯(lián)的數(shù)據(jù),例如文檔、配置文件等。
【當(dāng)數(shù)據(jù)更新頻繁時(shí)】
如果一個(gè)AI系統(tǒng)需要頻繁地更新數(shù)據(jù),那么使用XML格式也是一個(gè)不錯(cuò)的選擇。因?yàn)閄ML文件的讀取和寫入速度相對(duì)較快,這使得我們可以更快地加載新的數(shù)據(jù)并更新模型。
【當(dāng)對(duì)元數(shù)據(jù)需求高時(shí)】
如果數(shù)據(jù)集需要攜帶大量的元數(shù)據(jù)信息,如數(shù)據(jù)來(lái)源、標(biāo)簽、版本等,XML提供了靈活的方式來(lái)嵌入這些元數(shù)據(jù),有助于更全面地描述數(shù)據(jù)。
BTW,元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),它提供了有關(guān)數(shù)據(jù)的描述性信息,幫助理解、管理和使用實(shí)際數(shù)據(jù)。在XML格式中,元數(shù)據(jù)通常以標(biāo)簽的形式嵌入到數(shù)據(jù)中,提供了額外的信息。
假設(shè)有一個(gè)圖書館數(shù)據(jù)庫(kù),用于管理圖書信息。每本書都有詳細(xì)的元數(shù)據(jù),這些元數(shù)據(jù)可以使用XML格式進(jìn)行表示。
在上述XML示例中,每個(gè) <book> 元素表示一本書,而 <title> 、 <author> 等標(biāo)簽包含了有關(guān)該書的元數(shù)據(jù)。例如, <genre> 提供了關(guān)于書籍類型的信息, <publicationYear> 提供了關(guān)于出版年份的信息,而 <location> 元素包含了書籍在圖書館的位置信息。
通過(guò)這個(gè)小例子,可以看出通過(guò)使用XML格式,可以將這些元數(shù)據(jù)結(jié)構(gòu)化地組織在一起,不僅易于理解和處理,也有助于圖書館管理系統(tǒng)更有效地跟蹤圖書信息,提供查詢服務(wù),以及管理庫(kù)存。
我們?cè)贏I數(shù)據(jù)集的實(shí)際應(yīng)用中,XML格式也因?yàn)樽陨淼囊恍┝觿?shì)(如下),自然也有不適用的地方。
【占用更多存儲(chǔ)空間】
XML文件的結(jié)構(gòu)相對(duì)冗余,包含了大量標(biāo)簽和元素,這些都會(huì)增加文件的大小,同時(shí)增加存儲(chǔ)和傳輸?shù)呢?fù)擔(dān)。尤其是在處理大規(guī)模數(shù)據(jù)時(shí),這種情況可能成為性能瓶頸。
【解析復(fù)雜】
XML文件的解析相對(duì)復(fù)雜,需要使用專門的解析器。與其他格式相比,解析XML文件需要更多的計(jì)算資源和時(shí)間。這會(huì)導(dǎo)致在處理大型XML文件時(shí),解析和處理速度相對(duì)較慢。
【標(biāo)記過(guò)多】
成也標(biāo)記,敗也標(biāo)記。XML因?yàn)槭褂昧舜罅康臉?biāo)記符號(hào)(如尖括號(hào)和斜杠)來(lái)定義元素和屬性。如果標(biāo)簽嵌套層次太深或標(biāo)簽使用過(guò)于頻繁,可能會(huì)導(dǎo)致文件結(jié)構(gòu)混亂,難以維護(hù)。
【不適合簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)】
俗話說(shuō),什么馬配什么鞍。對(duì)于簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),使用XML格式可能顯得過(guò)于繁重。例如,如果只需表示鍵值對(duì)或簡(jiǎn)單的層次結(jié)構(gòu),XML的結(jié)構(gòu)則顯得過(guò)于繁瑣,選擇更輕巧的格式可能更加合適。
總體而言,我們?cè)趯?shí)際應(yīng)用中,需要根據(jù)具體需求,綜合考慮XML的優(yōu)勢(shì)和劣勢(shì),以及與其他格式的比較,選擇最適合的數(shù)據(jù)格式。
4. HDF5(層次數(shù)據(jù)格式5)
HDF5(Hierarchical Data Format 5)是一種用于存儲(chǔ)和組織大規(guī)模數(shù)據(jù)的文件格式。從“層次數(shù)據(jù)格式”這個(gè)名字中我們可以知道,HDF5支持層次化的數(shù)據(jù)結(jié)構(gòu),這意味著數(shù)據(jù)可以按照層次關(guān)系進(jìn)行組織,就像文件夾和文件的結(jié)構(gòu)一樣。這種層次化的結(jié)構(gòu)讓存儲(chǔ)和檢索復(fù)雜的數(shù)據(jù)變得更加靈活和高效。
HDF5的設(shè)計(jì)目標(biāo)是支持各種類型和復(fù)雜性的數(shù)據(jù),它支持多種數(shù)據(jù)類型,包括數(shù)值、字符、圖像和音頻等,適用于科學(xué)、工程等領(lǐng)域的數(shù)據(jù)管理和分析。
在AI機(jī)器學(xué)習(xí)中,特別是在深度學(xué)習(xí)和大規(guī)模數(shù)據(jù)處理方面,研究人員和工程師經(jīng)常使用HDF5格式來(lái)存儲(chǔ)和交換數(shù)據(jù),例如神經(jīng)網(wǎng)絡(luò)的權(quán)重、訓(xùn)練樣本等。
HDF5格式可以包含多個(gè)組(Group)和數(shù)據(jù)集(Dataset)。每個(gè)數(shù)據(jù)集都可以包含多維數(shù)組以及與之相關(guān)的元數(shù)據(jù)。以下是一個(gè)HDF5格式的文件示例:
在這個(gè)例子中,我們用HDF5格式存儲(chǔ)實(shí)驗(yàn)室測(cè)得的溫度和濕度數(shù)據(jù)。 Weather_Data 是整個(gè)數(shù)據(jù)集的名稱,包含了多個(gè)實(shí)驗(yàn)組( Experiment_1 , Experiment_2 等)。每個(gè)實(shí)驗(yàn)組中都有溫度( Temperature )和濕度( Humidity )兩個(gè)數(shù)據(jù)集,它們分別包含相應(yīng)的測(cè)量數(shù)據(jù)。
HDF5格式這種層次化的組織方式可以讓權(quán)重信息清晰地保存和讀取,也適用于存儲(chǔ)和管理復(fù)雜、大規(guī)模的科學(xué)數(shù)據(jù),比如氣象學(xué)、地球科學(xué)等領(lǐng)域的數(shù)據(jù)。
我們?cè)贏I數(shù)據(jù)集的應(yīng)用中,什么情況下會(huì)選擇用HDF5格式存儲(chǔ)或處理數(shù)據(jù)?
【當(dāng)處理大規(guī)模數(shù)據(jù)集時(shí)】
對(duì)于深度學(xué)習(xí)中包含龐大權(quán)重和特征的模型,HDF5格式就有了發(fā)揮之地。HDF5有壓縮和分塊存儲(chǔ)的特性,可以高效地壓縮、存儲(chǔ)和檢索大量數(shù)據(jù),能夠有效應(yīng)對(duì)深度學(xué)習(xí)模型中產(chǎn)生的海量數(shù)據(jù)。
【當(dāng)數(shù)據(jù)結(jié)構(gòu)復(fù)雜時(shí)】
當(dāng)數(shù)據(jù)集具有復(fù)雜的層次結(jié)構(gòu)或包含多個(gè)數(shù)據(jù)類型時(shí),用HDF5格式比較合適。它支持多層次的數(shù)據(jù)組織,允許在同一文件中存儲(chǔ)各種數(shù)據(jù)類型,包括標(biāo)量、數(shù)組和復(fù)合數(shù)據(jù)類型。對(duì)于在傳感器網(wǎng)絡(luò)、科學(xué)實(shí)驗(yàn)結(jié)果等場(chǎng)合中,涉及多層次信息的數(shù)據(jù)存儲(chǔ)和處理非常重要。
【有元數(shù)據(jù)管理需求時(shí)】
元數(shù)據(jù)對(duì)于數(shù)據(jù)集的理解和解釋至關(guān)重要。HDF5格式提供了高度靈活的元數(shù)據(jù)管理機(jī)制,允許我們附加詳細(xì)的描述性信息,對(duì)數(shù)據(jù)進(jìn)行標(biāo)注和注釋。正因?yàn)槿绱?,?shù)據(jù)集更具可讀性,更易于共享和協(xié)作,對(duì)于科研領(lǐng)域的數(shù)據(jù)集尤為有益。
在知道了適用場(chǎng)景之后,我們也同樣需要知道,在AI數(shù)據(jù)集的實(shí)際應(yīng)用中,HDF5格式會(huì)暴露出哪些劣勢(shì)?
【學(xué)習(xí)成本高相對(duì)較高】
雖然HDF5格式在靈活性和性能方面迪歐不錯(cuò),但與CSV或JSON等文本格式相比,HDF5文件的結(jié)構(gòu)和使用方式可能對(duì)新手不夠友好,需要一定的時(shí)間來(lái)適應(yīng)。這可能對(duì)一些小型項(xiàng)目或初學(xué)者構(gòu)成一定的障礙。
【不適用于簡(jiǎn)單結(jié)構(gòu)和小規(guī)模數(shù)據(jù)】
HDF5格式的優(yōu)勢(shì)在于處理大規(guī)模和復(fù)雜結(jié)構(gòu)的數(shù)據(jù),但對(duì)于簡(jiǎn)單結(jié)構(gòu)和小規(guī)模數(shù)據(jù),它可能就“大材小用”了,或者說(shuō)性價(jià)比不高。使用HDF5格式存儲(chǔ)小規(guī)模數(shù)據(jù)會(huì)顯得繁瑣,而且文件大小相對(duì)較大,不如其他輕量級(jí)格式直觀。
【不適用于文本數(shù)據(jù)】
HDF5格式主要用于存儲(chǔ)數(shù)值型和結(jié)構(gòu)化的數(shù)據(jù),對(duì)于文本數(shù)據(jù)的支持相對(duì)較弱。在一些需要純文本存儲(chǔ)和處理的場(chǎng)景下,像CSV這樣的格式可能更為簡(jiǎn)單和實(shí)用。
我們通過(guò)二元對(duì)立的角度來(lái)看,HDF5格式在處理大規(guī)模、復(fù)雜數(shù)據(jù)集上有優(yōu)勢(shì),但在學(xué)習(xí)成本,數(shù)據(jù)類型兼容等方面也存在不足,我們?cè)谶x擇格式時(shí)需權(quán)衡利弊,根據(jù)具體需求和應(yīng)用場(chǎng)景做出合適的選擇。
5. Parquet(列式存儲(chǔ))
Parquet是一種開放源代碼的列式存儲(chǔ)格式,旨在提供高效的數(shù)據(jù)壓縮和快速掃描性能。它最初由Apache軟件基金會(huì)開發(fā),支持多種編程語(yǔ)言的讀寫。
它具有良好的壓縮性能和高效的查詢性能,適用于大數(shù)據(jù)分析和機(jī)器學(xué)習(xí)。目前廣泛應(yīng)用于大數(shù)據(jù)領(lǐng)域,特別是在Apache Hadoop生態(tài)系統(tǒng)中。
假設(shè)我們有一個(gè)包含用戶信息的數(shù)據(jù)集,使用Parquet格式進(jìn)行存儲(chǔ)可能如下所示:
在這個(gè)例子中,我們?yōu)槊總€(gè)用戶提供了姓名、年齡、電子郵件的信息。這種結(jié)構(gòu)充分展示了Parquet格式的列式存儲(chǔ)特性,有助于在處理大規(guī)模數(shù)據(jù)集時(shí)提高存儲(chǔ)和查詢效率。
我們?cè)贏I數(shù)據(jù)集的應(yīng)用中,什么情況下會(huì)選擇用Parquet格式存儲(chǔ)或處理數(shù)據(jù)?
【當(dāng)數(shù)據(jù)類型和關(guān)系復(fù)雜時(shí)】
Parquet支持多種數(shù)據(jù)類型,包括數(shù)值、日期、時(shí)間戳等,所以它非常適合處理復(fù)雜的AI數(shù)據(jù)集。此外,Parquet還支持嵌套的數(shù)據(jù)結(jié)構(gòu),如數(shù)組和字典,這個(gè)特點(diǎn)有助于它可以輕松地表示復(fù)雜的數(shù)據(jù)關(guān)系。
【需要處理大規(guī)模的數(shù)據(jù)時(shí)】
Parquet有高效的查詢性能。在AI數(shù)據(jù)集中,經(jīng)常需要處理大規(guī)模的數(shù)據(jù),Parquet格式的列式存儲(chǔ)特點(diǎn),在查詢和分析特定列的數(shù)據(jù)時(shí)更加高效。AI應(yīng)用常常需要頻繁讀取、篩選或聚合大量數(shù)據(jù),用Parquet格式是很好的選擇。
又加上Parquet有良好的壓縮性能。Parquet的壓縮算法,可以減小存儲(chǔ)空間。在AI領(lǐng)域,數(shù)據(jù)集通常龐大,對(duì)存儲(chǔ)空間的有效利用至關(guān)重要。使用Parquet格式可以降低存儲(chǔ)成本,提高數(shù)據(jù)集的可擴(kuò)展性。
【處理時(shí)間變化的數(shù)據(jù)模式時(shí)】
Parquet支持嵌套數(shù)據(jù)結(jié)構(gòu)和模式演化。在AI研究中,數(shù)據(jù)集的結(jié)構(gòu)和字段可能會(huì)隨項(xiàng)目進(jìn)展而演化,而Parquet非常靈活,它可以輕松地處理復(fù)雜的數(shù)據(jù)類型和隨時(shí)間變化的數(shù)據(jù)模式。
與此同時(shí),我們?cè)贏I數(shù)據(jù)集的實(shí)際應(yīng)用中,也需知曉Parquet格式會(huì)暴露出哪些劣勢(shì)?
【不適合頻繁追加數(shù)據(jù)】
Parquet就像一位單一專長(zhǎng)厲害到天花板的歌手,讓它唱美聲可以到達(dá)一流,但是唱流行歌曲可能就一般般了。由此可見,Parquet格式適用于分析性質(zhì)的工作負(fù)載,如數(shù)據(jù)分析和查詢。但在一些需要頻繁修改和追加數(shù)據(jù)的場(chǎng)景下,Parquet可能并不是最佳選擇。
【不適合小規(guī)模數(shù)據(jù)】
我們?cè)趯?shí)際應(yīng)用中,也需要追求使用效益的性價(jià)比。對(duì)于小規(guī)模數(shù)據(jù)集,Parquet格式可能會(huì)顯得過(guò)于復(fù)雜,而且對(duì)存儲(chǔ)和處理的優(yōu)勢(shì)不如在大規(guī)模數(shù)據(jù)集中明顯。我們?cè)谧鯝I項(xiàng)目時(shí),如果是在一些小型項(xiàng)目或快速原型開發(fā)中,選擇其他更簡(jiǎn)單的格式可能更為合適。
【可讀性較差,學(xué)習(xí)成本高】
Parquet文件以二進(jìn)制格式存儲(chǔ),因此可讀性較差,不如一些文本格式(如CSV)那樣直觀。這倒是和HDF5格式有了同樣的問(wèn)題了。可讀性差也帶來(lái)了學(xué)習(xí)成本的提高,對(duì)于初次接觸Parquet的團(tuán)隊(duì)成員,可能需要額外的培訓(xùn),更多的時(shí)間來(lái)了解其工作原理、優(yōu)化技巧以及實(shí)操練習(xí)。
6.xlsx、xls等格式的Excel文件
最后,還是想說(shuō)一下以xlsx、xls等格式為代表的Excel文件。對(duì)于xlsx或xls格式,相信大家都不陌生,我們常常在Excel中遇見這樣的格式。
想說(shuō)一下Excel的原因也很簡(jiǎn)單,因?yàn)樗R娏?,常見到我們常常忽略了Excel本身并不屬于任何一種數(shù)據(jù)格式,它其實(shí)是一種軟件。它可以輔助我們錄入數(shù)據(jù)、處理數(shù)據(jù)、完成數(shù)據(jù)分析和數(shù)據(jù)可視化等。
同時(shí),Excel文件可支持的格式太多了,如果都說(shuō)就偏離了本文的重心。我就以最常用的xlsx、xls這兩個(gè)格式為例,來(lái)說(shuō)一下我們?cè)贏I數(shù)據(jù)集的場(chǎng)景中,會(huì)如何運(yùn)用它。
我們將數(shù)據(jù)以xlsx格式存儲(chǔ)在Excel表格中,每個(gè)工作表可以包含一個(gè)或多個(gè)單元格,用于存儲(chǔ)數(shù)據(jù)、公式、文本等。每一行或者每個(gè)單元格可以包含一個(gè)數(shù)據(jù)點(diǎn),適用于結(jié)構(gòu)化數(shù)據(jù)。
以下是一個(gè)簡(jiǎn)單的Excel表格中xlsx的示例,表示一個(gè)包含文本和標(biāo)簽的數(shù)據(jù)集:
在這個(gè)例子中,每一行代表一個(gè)數(shù)據(jù)點(diǎn)(一個(gè)文本例子),而每列則表示該數(shù)據(jù)點(diǎn)的一個(gè)特征(positive、negative、neutral)。每個(gè)單元格中的數(shù)據(jù)都按行和列組織,這是Excel表格的典型結(jié)構(gòu)。這種結(jié)構(gòu)化的表格形式非常適合表示和處理數(shù)據(jù)。
我們?cè)贏I數(shù)據(jù)集的應(yīng)用中,什么情況下會(huì)選擇用Excel文件存儲(chǔ)xlsx、xls這類格式的數(shù)據(jù)?
【當(dāng)數(shù)據(jù)小規(guī)模、結(jié)構(gòu)化時(shí)】
在處理小規(guī)模、結(jié)構(gòu)化的數(shù)據(jù)時(shí),Excel的表格格式適合整齊排列的數(shù)據(jù),我們可以快速了解數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容,也能夠快速進(jìn)行基本的數(shù)據(jù)操作和分析,并通過(guò)Excel將數(shù)據(jù)存儲(chǔ)為xlsx、xls這類格式。
【當(dāng)數(shù)據(jù)有多種簡(jiǎn)單類型時(shí)】
Excel支持多種簡(jiǎn)單的數(shù)據(jù)類型,包括文本、數(shù)字、日期和時(shí)間等。如果我們需要將不同類型的數(shù)據(jù)存儲(chǔ)在同一個(gè)工作表中,同時(shí)還需要對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單的整合和分析,用Excel是很好的選擇。
【需要一些公式計(jì)算來(lái)處理數(shù)據(jù)時(shí)】
Excel支持各種復(fù)雜的數(shù)學(xué)和統(tǒng)計(jì)函數(shù),當(dāng)我們使用數(shù)據(jù)集時(shí),如果需要對(duì)數(shù)據(jù)進(jìn)行處理和計(jì)算,可以在Excel中執(zhí)行操作,而無(wú)需編寫復(fù)雜的代碼。
雖然Excel非常強(qiáng)大,我們幾乎離不開它,但在AI數(shù)據(jù)集的實(shí)際應(yīng)用中,用Excel文件存儲(chǔ)xlsx、xls這類格式的數(shù)據(jù)會(huì)依舊存在一些劣勢(shì)。
【容量大小限制】
Excel的最大行數(shù)為1048576行,這意味著當(dāng)數(shù)據(jù)集的大小超過(guò)這個(gè)限制時(shí),Excel將無(wú)法正常工作。
一般情況下,Excel文件的大小上限為100MB/200MB左右,這限制了可以存儲(chǔ)在單個(gè)Excel文件中的數(shù)據(jù)量。隨著數(shù)據(jù)集的增長(zhǎng),可能需要將數(shù)據(jù)分散到多個(gè)Excel文件中,這將導(dǎo)致數(shù)據(jù)管理和維護(hù)變得復(fù)雜和低效。
所以,對(duì)于大規(guī)模的數(shù)據(jù)集,特別是深度學(xué)習(xí)等需要大量數(shù)據(jù)的任務(wù),Excel可能無(wú)法滿足需求。
【不支持復(fù)雜數(shù)據(jù)類型】
復(fù)雜數(shù)據(jù)類型通常指的是那些無(wú)法通過(guò)簡(jiǎn)單的數(shù)值或文本表示的數(shù)據(jù),例如圖像、音頻或視頻等。Excel在面對(duì)這類數(shù)據(jù)時(shí),就會(huì)明顯暴露其局限性。
【不適合多模態(tài)數(shù)據(jù)】
多模態(tài)數(shù)據(jù)是指同時(shí)包含兩種或更多種形式的數(shù)據(jù)的數(shù)據(jù)。這類數(shù)據(jù)可能是一個(gè)產(chǎn)品描述,它包含文本描述(如產(chǎn)品的功能和規(guī)格),以及圖像信息(如產(chǎn)品的外觀和顏色)。
在這種情況下,我們需要同時(shí)考慮和處理文本和圖像信息,以便更好地理解和分析數(shù)據(jù)。這時(shí),通過(guò)Excel就無(wú)法對(duì)數(shù)據(jù)進(jìn)行有效處理。
因此,當(dāng)數(shù)據(jù)集涉及多種類型的數(shù)據(jù)時(shí),我們通常需要尋找更靈活的存儲(chǔ)和處理方式。例如,我們可以使用數(shù)據(jù)庫(kù)或者專門的數(shù)據(jù)處理軟件來(lái)存儲(chǔ)和處理多模態(tài)數(shù)據(jù)。
7. 不止這些
當(dāng)然,AI數(shù)據(jù)集中的格式遠(yuǎn)遠(yuǎn)不止以上列舉的這些,還有很多在專業(yè)領(lǐng)域派上用場(chǎng)的數(shù)據(jù)格式,比如TFRecord、Avro、Feather、DICOM等。
我們知道,在AI項(xiàng)目中,數(shù)據(jù)是推動(dòng)模型訓(xùn)練和性能提升的核心。選擇合適的數(shù)據(jù)格式對(duì)于不同類型的AI項(xiàng)目至關(guān)重要。所以我們對(duì)圖像,文本,音頻,視頻,時(shí)間序列甚至是傳感器等等各類數(shù)據(jù),都需要找到匹配的數(shù)據(jù)格式。
在大規(guī)模數(shù)據(jù)集和實(shí)時(shí)應(yīng)用中,匹配的數(shù)據(jù)格式能夠提高數(shù)據(jù)處理的效率和速度。一些數(shù)據(jù)格式在存儲(chǔ)和讀取時(shí)更為高效,可以減少數(shù)據(jù)預(yù)處理的時(shí)間,加速模型的訓(xùn)練和推理過(guò)程,提高整體效果。
考慮到AI項(xiàng)目中的數(shù)據(jù)大小和存儲(chǔ)成本,以及不同的數(shù)據(jù)格式對(duì)存儲(chǔ)空間的需求不同。比如有些格式具有高度的壓縮性,適合大規(guī)模數(shù)據(jù)集的存儲(chǔ),而有些則不需要。所以,我們?cè)诳紤]存儲(chǔ)成本和資源限制時(shí),選擇匹配的數(shù)據(jù)格式可以降低整體成本。
為了更好地訓(xùn)練監(jiān)督學(xué)習(xí)模型,選擇匹配的數(shù)據(jù)格式也有助于更好地處理數(shù)據(jù)標(biāo)注和標(biāo)簽。一些格式支持多種數(shù)據(jù)類型的同時(shí)保持標(biāo)簽信息,也可以讓數(shù)據(jù)集的標(biāo)簽管理更為方便。
總而言之,考慮到AI項(xiàng)目的特定需求、模型結(jié)構(gòu)、數(shù)據(jù)處理效率、存儲(chǔ)成本等多方面因素,我們提前選擇好合適的數(shù)據(jù)格式有助于提高AI模型性能、降低成本,并簡(jiǎn)化整個(gè)工作流程。這樣做起來(lái)好處多多,我們何樂(lè)不為呢。
三、推薦幾個(gè)人工智能數(shù)據(jù)集
人工智能早已成為各行各業(yè)最受關(guān)注的“網(wǎng)紅”。好像凡事不和AI有關(guān),就仿佛被時(shí)代淘汰了。然而實(shí)際情況是,大多數(shù)AI項(xiàng)目由于種種原因無(wú)法實(shí)現(xiàn)成功部署。這其中一個(gè)重要因素就是數(shù)據(jù)質(zhì)量低或數(shù)據(jù)不足。
數(shù)據(jù)集對(duì)機(jī)器學(xué)習(xí)模型的性能日益重要,現(xiàn)在有許多站點(diǎn)都托管數(shù)據(jù)存儲(chǔ)庫(kù),涵蓋主題廣泛,應(yīng)有盡有。無(wú)論機(jī)器學(xué)習(xí)項(xiàng)目是什么,都可以找到相關(guān)的數(shù)據(jù)集。
但是,我們?cè)趯ふ液线m的數(shù)據(jù)集時(shí),需要先問(wèn)自己兩個(gè)問(wèn)題:
1.我想用AI項(xiàng)目達(dá)成什么目標(biāo)?2.我需要數(shù)據(jù)涵蓋哪些情景?然后,帶著答案去有目的地尋找。
如果想清楚了,就去網(wǎng)上看看有沒有你想要的公開數(shù)據(jù)集。以下就是推薦的幾個(gè)常見的公開數(shù)據(jù)集平臺(tái)
1. Kaggle
網(wǎng)址:https://www.kaggle.com/datasets
介紹:Kaggle 提供了一個(gè)龐大的數(shù)據(jù)集倉(cāng)庫(kù),包括各種領(lǐng)域的數(shù)據(jù),涵蓋了自然語(yǔ)言處理、計(jì)算機(jī)視覺、醫(yī)學(xué)、金融等多個(gè)領(lǐng)域。
2. UCI機(jī)器學(xué)習(xí)數(shù)據(jù)集庫(kù)
網(wǎng)址:https://archive.ics.uci.edu/
介紹:UCI機(jī)器學(xué)習(xí)數(shù)據(jù)庫(kù)被世界各地的學(xué)生、教育工作者和研究人員廣泛使用。它包含了多種類型的數(shù)據(jù)集,涵蓋了分類、回歸、聚類、關(guān)聯(lián)規(guī)則挖掘等不同任務(wù)的數(shù)據(jù)。這些數(shù)據(jù)集來(lái)自多個(gè)領(lǐng)域,包括醫(yī)學(xué)、金融、社會(huì)科學(xué)等。
3. Google Dataset Search
網(wǎng)址:https://datasetsearch.research.google.com/
介紹:“Google數(shù)據(jù)集搜索”是一個(gè)數(shù)據(jù)集搜索引擎。用戶只需搜索關(guān)鍵字,就能在網(wǎng)絡(luò)上發(fā)現(xiàn)托管在數(shù)千個(gè)存儲(chǔ)區(qū)中的數(shù)據(jù)集。目前已對(duì)近 2500 萬(wàn)個(gè)數(shù)據(jù)集建立了索引,幾乎能找到你想找到的任何數(shù)據(jù)集。
4. AWS數(shù)據(jù)庫(kù)
網(wǎng)址:https://registry.opendata.aws/
介紹:AWS(亞馬遜)公共數(shù)據(jù)庫(kù)里面存儲(chǔ)了AWS收集的數(shù)據(jù)集,有來(lái)自各行業(yè)領(lǐng)先數(shù)據(jù)提供商的3000種現(xiàn)有數(shù)據(jù)產(chǎn)品。
5. 阿里云天池?cái)?shù)據(jù)集
網(wǎng)址:https://tianchi.aliyun.com/dataset/
介紹:天池?cái)?shù)據(jù)集是阿里集團(tuán)對(duì)外開放的科研數(shù)據(jù)平臺(tái),覆蓋了電商、娛樂(lè)、物流、醫(yī)療健康、交通、工業(yè)、自然科學(xué)、能源等十多個(gè)行業(yè),涵蓋了數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺、自然語(yǔ)言處理、決策智能等經(jīng)典的人工智能技術(shù)領(lǐng)域。
四、新篇預(yù)告
以上,就是關(guān)于AI數(shù)據(jù)集的首篇內(nèi)容了,介紹了AI數(shù)據(jù)集是什么,這些數(shù)據(jù)集常用什么樣的格式來(lái)存儲(chǔ)和處理數(shù)據(jù),當(dāng)我們需要數(shù)據(jù)來(lái)做AI項(xiàng)目時(shí),有哪些公開的數(shù)據(jù)集平臺(tái)可供參考。
AI的世界很大,在門外時(shí)會(huì)覺得神秘,剛?cè)腴T時(shí)又會(huì)覺得陌生,日漸相處之后又會(huì)發(fā)現(xiàn)如此有趣,AI數(shù)據(jù)集的內(nèi)容我們還沒說(shuō)完,后面的篇章我們會(huì)圍繞“訓(xùn)練集,驗(yàn)證集,測(cè)試集”的話題展開,繼續(xù)說(shuō)說(shuō)AI數(shù)據(jù)集。
如果覺得有所收獲,歡迎關(guān)注我,我們?cè)贏I路上攜手同行。
作者:果釀,公眾號(hào):果釀產(chǎn)品說(shuō)
本文由 @果釀 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來(lái)自 Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒評(píng)論,等你發(fā)揮!