讓煉丹更玄學!蘇大博士用「天干地支」生成隨機種子,項目已開源
機器學習,俗稱「煉丹」。
作為AI「黑魔法」的一種,再加點「玄學」又會如何?
最近,有位來自蘇州大學的博士生就做了個「隨機撞運」的項目。
這位老哥表示,機器學習要用的隨機種子會影響最終的實驗結果,那不如搞個增運加持吧。
開源項目:https://github.com/Spico197/random-luck
這可真是「東海西海心理攸同,南學北學道術未裂」。
生成數字有兩種方法:一種是簡單的填個生日日期,另一種是計算AI實驗開始時間的天干地支數字,返回一個幸運數字,拿這個數字作為隨機種子跑實驗。
效果大概是這樣:
代碼如下:
#installation
pip install randluck -i https://pypi.org/simple
#usage
import randluck
random_seed = randluck.get_random_seed(strategy="bazi")
print(random_seed)
from datetime import dateime, date
random_seed = randluck.get_random_seed(utc_datetime=datetime.utcnow(), strategy="bazi")
print(random_seed)
random_seed = randluck.get_random_seed(utc_datetime=date(year=2015, month=9, day=7), strategy="lucky_num_by_year")
print(random_seed)
雖然作者說這只是為了好玩,絲毫沒有想附會科學證明或解釋。
不過廣受調參所苦的碼農和學生們,在這上面寄托點美好愿望也是可以的……吧?
作者朱桐目前正在蘇州大學攻讀博士學位,此前在貴州大學獲得學士學位。
研究方向為物聯網設計,關系抽取和事件抽取。
曾在2020年獲得CCKS「金融文件的事件抽取」任務團隊第一名,2021年獲得語言與智能競賽三等獎(前5名團隊)以及CCKS事件和關系抽取任務技術創新獎。
天干地支
雖然現在富具科學精神的碼農們少有真正信天干地支是實在貨色的,但并不代表熱衷使用干支概念的時代人群也這么看。
按照古文字考據界的頂會作者、大宗師郭沫若的考證,古中國初現于公元前13-12世紀的「十二地支」、「太歲紀年」,來源于古西亞初現于公元前45-23世紀、成熟于公元前13世紀的「黃道十二宮」系統。
對應「十二地支」的十二個「太歲年名」,就是「十二宮」的古蘇美爾語和阿卡德語單詞讀音轉寫而成。「十二宮」在古西亞泥板上的星座符號,與之后「十二地支」的甲骨文圖像,也近乎完全一致。
古西亞的星座圖
也就是說,天干地支系統和十二星座系統的算命技術其實有差相仿佛的起源。就像CNN現在也不分國界了一樣,大家都要卷一卷……
而幾千年前的古西亞人和古中國人看待星宮/干支的眼光,和當代AI從業者看LeCun的差不多:都是前沿科技,就算我不懂,但是大牛說的一定很厲害。
所以拿模擬器吐個干支出來,算是上古前沿技術和當代前沿技術合流了。
畢竟科幻小說家海因萊茵有講過:「你覺得好厲害的超自然現象,都是創造者覺得好麻煩的精密工程現象。」
隨機種子
從概念上講,種子值是用來生成隨機數發生器的。而且,每次使用相同的種子值,都會得到相同的隨機值。
也就是說,隨機種子可以確保任何重新運行這段代碼的人都會得到完全相同的輸出。
通常在兩個任務中會用到:
1. 將數據分割成訓練/驗證/測試集:隨機種子確保每次運行代碼時都以相同的方式分割數據
2. 模型訓練:隨機森林和梯度提升等算法是非確定性的(對于一個給定的輸入,輸出并不總是相同的),因此需要一個隨機種子參數以獲得可重復的結果
除了可重復性之外,隨機種子對于具有參考性的結果也很重要。比如測試一個算法的多個版本,重要的是所有版本都使用相同的數據,并且盡可能的相似(除了需要測試的參數)。
盡管隨機種子很重要,但它的設置往往不費吹灰之力。比如使用工作時的日期(2020年3月1日,種子就是20200301)。
有些人每次都使用同一個種子,而有些人則隨機生成。
舉個例子,當使用Scikit-learn訓練機器學習模型時,從sklearn.model_selection模塊中導入的函數train_test_split使用隨機狀態等參數來獲取隨機種子的輸入。
from sklearn import datasets
from sklearn.model_selection import train_test_split
iris = datasets.load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
random_state=42這個參數在每次運行上述代碼時都將隨機種子設置為相同的值,也就會得到相同的驗證集(X_test,y_test)。
AI寫你的每日星盤
當然,AI作妖這么浪漫的點子,不會僅限于中國碼農。用AI寫星盤的點子,美國碼農也有過。
2017年,VICE雜志就有報道過,三個兼具碼力、產品開發力、和星座學愛好的紐約碼農,苦于當時市面上的「智能星盤」、「自動星盤」app只會復讀錄入的蘇珊米勒們1990年代的作品,自己做了個「星盤算法」。
基本機制倒不復雜。開發者首先錄入各種天體運動在星相學上的對應算命闡釋,同時開發接口自動扒來NASA公開的天體追蹤數據。然后開發算法將這些數據的計算結果對應起來,同時開發自然語言生成器,讓算法結果以「你的每日星盤」文章出現。
這些星座學愛好者還有非常合格的產品經理能力,「星盤算法」app特別強調加好友的社交功能。不僅可以對照各人的星盤表,還能生成各人之間的星相契合性。
各種天體與十二黃道星座互動的「入宮」,對各人和各人好友的命運影響和互動,在app上也有呈現。加的好友越多,呈現的結果就越具體。
「星盤算法」的開發者很開心地對VICE說:「我們當然知道這不是科學算命。但這是一種有趣的故事闡述方式,既基于古神話學、又基于當代人性格,很好玩的。」
不過不僅浪漫是普世的,理科生靠實力單身的性格好像也是普世的。2020年就有碼農去推特上采樣星盤推特回復的表情圖頻率作為原始數據,寫了個項目來跑統計。以回復者的準確與否表態,來驗證星座學是否真能有效算命……
廢話,當然不能了,真是不解風情,做這個項目的人一定不會有女朋友。