首頁 都市

重生學(xué)神有系統(tǒng)

第52章 “感知機(jī)”的初次實(shí)戰(zhàn)

重生學(xué)神有系統(tǒng) 一碗酸梅湯 2320 2019-11-06 07:09:22

  業(yè)余黑客有個(gè)潛規(guī)則。

  政府機(jī)關(guān)、金融系統(tǒng)、電子商務(wù)……這類網(wǎng)站的后臺(tái),是機(jī)密重地,通常有高手坐鎮(zhèn),沒事最好別去溜達(dá)。

  被網(wǎng)監(jiān)或者安全專家盯上,十有八九落不了好。

  而個(gè)人網(wǎng)站、小型辦公網(wǎng)絡(luò)、學(xué)校網(wǎng)站……

  這種信息安全不太敏感的,僅僅是瀏覽或下載一些數(shù)據(jù),一般不會(huì)有什么大問題。

  比如從鐵道部官網(wǎng)12306爬點(diǎn)數(shù)據(jù),做個(gè)輔助訂票系統(tǒng)什么的……

  但無論任何地方,肆意破壞總是不被允許的,這是底線。

  《原始數(shù)據(jù)表》的奇怪情況,身份證位數(shù)不對(duì),側(cè)面支持了這種可能性。

  通過黑客手段獲取數(shù)據(jù),有時(shí)候會(huì)遇到一些匪夷所思的問題,比如數(shù)據(jù)格式特殊,下載的數(shù)據(jù)寬度受限……

  有時(shí)候,甚至在后臺(tái)數(shù)據(jù)庫(kù)里,只能找到數(shù)據(jù)的一部分,而其余部分被保存在無法訪問的文件里。

  寫后臺(tái)程序的人,會(huì)基于各種各樣的理由,寫出可讀性極差的代碼。

  比如:讀寫效率、數(shù)據(jù)安全、修補(bǔ)bug、系統(tǒng)健壯……

  又或者不想被人繼承代碼,取代自己的位置,甚至單純?yōu)榱藗€(gè)人興趣、編程風(fēng)格……

  都可能導(dǎo)致這些人,搞出種種令人費(fèi)解的騷操作。

  當(dāng)然,也可能老高的技術(shù)還有缺陷,或者他是從虛擬內(nèi)存、交換文件里挖掘出來的數(shù)據(jù)。

  也有可能在“作案”過程中被人盯上,不得不提前斷開連接……

  總之,擺在江寒面前的,就是這么兩張各有缺陷的表格,外加一個(gè)圖片壓縮包。

  接下來,江寒首先要做的,是從《原始數(shù)據(jù)表》里,篩選出需要的記錄,復(fù)制到《報(bào)名信息表》里。

  這一步非常簡(jiǎn)單,只要用excel自帶的VBScript編寫一個(gè)小腳本,將兩個(gè)表格按照姓名匹配,就可以得到每個(gè)考生在原始表里的行號(hào)。

  當(dāng)然,同名同姓是避免不了的,可能報(bào)名信息里一個(gè)“張三”,在原始數(shù)據(jù)里會(huì)找到一堆“張三”……這個(gè)一會(huì)兒再說。

  腳本編程非常簡(jiǎn)單,江寒只用了二十分鐘,就寫完程序并調(diào)試無誤。

  按了一下預(yù)設(shè)的快捷鍵,腳本開始執(zhí)行。

  一邊是3萬多行的考生姓名,一邊是10萬多行的原始數(shù)據(jù),腳本足足跑了八分鐘,才得到了一個(gè)映射關(guān)系表。

  接下來,是第二個(gè)腳本,參照映射關(guān)系表,將原始數(shù)據(jù)文件篩選出需要保留的行,其他行全都刪除,然后按照《報(bào)名信息表》的序號(hào),重新進(jìn)行排序,得到臨時(shí)文件1。

  這個(gè)臨時(shí)文件的行數(shù),要比報(bào)名表多出幾千行,這是因?yàn)榻畬?duì)重名進(jìn)行了處理,將重名的人都編上了相同的二級(jí)序號(hào)。

  接下來處理重名。

  經(jīng)過一番分析,江寒發(fā)現(xiàn),原始數(shù)據(jù)表和報(bào)名信息表里的數(shù)據(jù),排列順序是有規(guī)律的。

  其以地區(qū)為主關(guān)鍵字,所在學(xué)校為次要關(guān)鍵字,而所在班級(jí)則是第三關(guān)鍵字排序。

  也就是說,一個(gè)學(xué)校里,一個(gè)班級(jí)的人,都挨在一起,學(xué)校、地區(qū)之間也沒有混亂。

  這樣就好辦了。

  由于臨時(shí)文件已經(jīng)按序號(hào)排列,重名的人擁有同樣的二級(jí)序號(hào),自然就聚攏在了一起。

  這時(shí),只要看一下這些人的所在地區(qū)和學(xué)校,就能輕松分辨出哪些是多余的,那個(gè)才是真正對(duì)應(yīng)于《報(bào)名信息表》的。

  如果一個(gè)班級(jí)也有同名,就只能具體情況具體分析了,實(shí)在確定不了的,就先記下來,放在一邊,以后再說。

  一番整理后,臨時(shí)文件1已經(jīng)十分接近高老師希望得到的《報(bào)名信息表》。

  聯(lián)系電話、家庭住址,畢業(yè)學(xué)校、班級(jí)、民族、年齡、出生年月日都有了。

  接下來是重頭戲,通過照片判斷每個(gè)學(xué)生的性別。

  幸運(yùn)的是,雖然《原始數(shù)據(jù)表》里的身份證號(hào),殘缺不全,導(dǎo)致性別信息不可用,可是《報(bào)名信息表》里還有部分殘余的性別數(shù)據(jù)。

  這就給江寒減少了許多負(fù)擔(dān)。

  接下來,先將照片.rar解壓,然后觀察了一下。

  三萬多張照片,按學(xué)校、班級(jí)分類,放入幾千個(gè)文件夾中。

  每個(gè)文件的大小,都在10KB至30KB之間。

  像素只有210*120,不算特別清晰,但看清面部特征,還是沒什么問題的。

  其中,同班級(jí)里重名的情況,都在姓名后標(biāo)記著數(shù)字1、2……

  江寒猜想,這可能是輸入報(bào)名表的順序。

  接下來要做的,就是在臨時(shí)文件1里,找到每張照片對(duì)應(yīng)的人。

  這很簡(jiǎn)單,照片的文件名就是姓名,輕松就能和表格里的名字對(duì)上。

  在解決了數(shù)量不算很多的同班重名問題后,就生成了一個(gè)照片索引,將每一張照片和報(bào)名序號(hào)一一對(duì)應(yīng)上了。

  然后,是判斷性別,填入新《報(bào)名信息表》對(duì)應(yīng)的單元格里。

  這一步,按照高老師的想法,就是一個(gè)笨功夫,用眼睛去看,然后一個(gè)一個(gè)敲進(jìn)去。

  這十分麻煩,而且太沒效率。

  江寒希望能找個(gè)輕巧的辦法,能更快、更好的完成這一步。

  那么,這樣的辦法真的有嗎?

  是的。

  江寒畢竟搞過機(jī)器學(xué)習(xí),編程思維有點(diǎn)不一樣。

  高老師那樣的普通程序員,也能做到剛才那些步驟。

  但江寒接下來的操作,就是他的思維盲區(qū)了。

  機(jī)器學(xué)習(xí)里,有多種算法,都可以輔助完成這樣的任務(wù)。

  其中江寒最擅長(zhǎng)的,自然是人工神經(jīng)網(wǎng)絡(luò)。

  人工神經(jīng)網(wǎng)絡(luò)也分為好多種類。

  比如CNN,也就是卷積神經(jīng)網(wǎng)絡(luò),是最擅長(zhǎng)圖形識(shí)別的;

  而RNN,也就是循環(huán)神經(jīng)網(wǎng)絡(luò),比較適合語音識(shí)別、自然語言理解……

  如果采用人工神經(jīng)網(wǎng)絡(luò),哪怕不出動(dòng)CNN,只用多層神經(jīng)網(wǎng)絡(luò),也就是所謂的“深度學(xué)習(xí)”,也可以非常完美地解決這個(gè)問題。

  但江寒琢磨了一下,還是放棄了這個(gè)想法。

  一旦泄露出去,他很可能會(huì)有麻煩。

  因?yàn)檫@些技術(shù)的來源,他根本沒法解釋。

  技術(shù)跨度太大了。

  好吧,安全第一,先用“感知機(jī)”湊合一下。

  哪怕準(zhǔn)確率低點(diǎn),也無所謂了。

  江寒現(xiàn)在唯一可以拿出來的,就是“單層感知機(jī)”。

  這種技術(shù)只能解決二分類問題,并且還要求線性可分。

  好在當(dāng)前所面臨的問題,這兩個(gè)要求正好都符合。

  江寒重生前,做過一個(gè)實(shí)驗(yàn),用“單層感知機(jī)”識(shí)別手寫數(shù)字,應(yīng)用場(chǎng)景與現(xiàn)在差不多。

  效果也還過得去。

  所以,看照片識(shí)別男女的任務(wù),完全可以使用“單層感知機(jī)”解決。

  說起來,這可能是神經(jīng)網(wǎng)絡(luò)技術(shù),在這個(gè)世界的第一次實(shí)戰(zhàn)?

  江寒前幾天寫的論文里,就有“單層感知機(jī)”的代碼,稍微改動(dòng)了一下,就能用上了。

  研究機(jī)器學(xué)習(xí),首選語言是Python,語法簡(jiǎn)單,開發(fā)效率高,不容易出錯(cuò),也不用關(guān)心底層如何實(shí)現(xiàn)。

  不過,這篇論文的代碼,實(shí)在太簡(jiǎn)單,用什么都一樣。

  所以,江寒使用了最熟悉的C++。

  代碼略……

  (PS:絕對(duì)不是空白太小寫不下。)

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南