摘要: 很多人喜歡鼓吹人工智能,自動車,機器人等技術,然而如果你仔細觀察,就會發現這些人不但不理解人類智能是什麼,不理解人工智能有什麼局限性,而且這些“AI狂人”們的心,已經嚴重的機械化了。
有人聽說我想創業,給我提出了一些“忽悠”的辦法。他們說,既然你是程序語言專家,而現在人工智能(AI)又非常熱,那你其實可以搞一個“自動編程系統”,號稱可以自動生成程序,取代程序員的工作,節省許許多多的人力支出,這樣就可以趁著“AI 熱”拉到投資。
有人甚至把名字都給我想好了,叫“深度程序員”(DeepCoder = Deep Learning + Coder)。口號是:“有了DeepCoder,不用Top Coder!”還有人給我指出了這方向最新的,吹得神乎其神的研究,比如微軟的Robust Fill ……
我謝謝這些人的關心,然而其實我並不在乎,也不看好人工智能。現在我簡單的講一下我的看法。
機器一樣的心
很多人喜歡鼓吹人工智能,自動車,機器人等技術,然而如果你仔細觀察,就會發現這些人不但不理解人類智能是什麼,不理解人工智能有什麼局限性,而且這些“AI狂人”們的心,已經嚴重的機械化了。他們或多或少的失去了人性,彷彿忘記了自己是一個人,忘記了人最需要的是什麼,忘記了人的價值。這些人就像卓別林在『大獨裁者』最後的演講裡指出的:“機器一樣的人,機器一樣的心。”
每當提到AI,這些人必然野心勃勃地號稱要“取代人類的工作”,“節省勞動力開銷”。暫且不討論這些目標能否實現,它們與我的價值觀,從一開頭就是完全矛盾的。一個偉大的公司,應該為社會創造實在的,新的價值,而不是想方設法“節省”什麼勞動力開銷,讓人失業!想一下都覺得可怕,我創造一個公司,它最大的貢獻就是讓成千上萬的人失業,為貪得無厭的人節省“勞動力開銷”,讓貧富分化加劇,讓權力集中到極少數人手裡,最後導致民不聊生,導致社會的荒蕪甚至崩潰……
我不可想像生活在那樣一個世界,就算那將使我成為世界上最有錢的人,也沒有了意義。世界上有太多錢買不來的東西。如果走在大街上,我看不到人們幸福的笑容,悠閒的步伐,沒有親切的問候,關愛和幽默感,看不見甜蜜浪漫的愛情,反而看見遍地痛不欲生的無家可歸者,鼻孔裡鑽進來他們留下的衝人的尿騷味,走到哪裡都怕有人搶劫,因為人們實在活不下去了,除了偷和搶,沒有別的辦法活……
如果人工智能成功的話,這也許就是最後的結果。幸運的是,有充足的證據顯示,人工智能是永遠不會成功的。
我的人工智能夢
很多人可能不知道,我也曾經是一個“AI 狂熱者”。我也曾經為人工智能瘋狂,把它作為自己的“偉大理想”。我也曾經張口閉口拿“人類”說事,彷彿機器是可以跟人類相提並論,甚至高於人類的。當深藍電腦戰勝卡斯帕羅夫,我也曾經感嘆:“啊,我們人類完蛋了!” 我也曾經以為,有了“邏輯”和“學習”這兩個法(kou)寶(hao),機器總有一天會超越人類的智能。可是我沒有想清楚這具體要怎麼實現,也沒有想清楚實現了它到底有什麼意義。
故事要從十多年前講起,那時候人工智能正處於它的冬天。在清華大學的圖書館,我偶然地發現了一本塵封已久的『Paradigms of Artificial Intelligence Programming』(PAIP),作者是Peter Norvig。像個考古學家一樣,我開始逐一地琢磨和實現其中的各種經典AI算法。PAIP的算法側重於邏輯和推理,因為在它的年代,很多AI研究者都以為人類的智能,歸根結底就是邏輯推理。他們天真地以為,有了謂詞邏輯,一階邏輯這些東西,可以表達“因為所以不但而且存在所有”,機器就可以擁有智能。於是他們設計了各種基於邏輯的算法,專家系統(expert system),甚至設計了基於邏輯的程序語言Prolog,把它叫做“第五代程序語言”。最後,他們遇到了無法逾越的障礙,眾多的AI公司無法實現他們誇口的目標,各種基於“神經元”的機器無法解決實際的問題,巨額的政府和民間投資化為泡影,人工智能進入了冬天。
我就是在那樣一個冬天遇到了PAIP。它雖然沒能讓我投身於人工智能領域,卻讓我迷上了Lisp 和程序語言。也是因為這本書,我第一次輕鬆而有章法的實現了A* 等算法。我第一次理解到了程序的“模塊化”是什麼,在代碼例子的引導下,我開始在自己的程序裡使用小的“工具函數”,而不再憂心忡忡於“函數調用開銷”。PAIP 和SICP 這兩本書,最後導致了我投身於更加“基礎”的程序語言領域,而不是人工智能。
在PAIP 之後,我又迷了一陣子機器學習(machine learning),因為有人告訴我,機器學習是人工智能的新篇章。然而我逐漸意識到,所謂的人工智能和機器學習,跟真正的人類智能,關係其實不大。相對於實際的問題,PAIP 裡面的經典算法要么相當幼稚,要么複雜度很高,不能解決實際的問題。最重要的問題是,我看不出PAIP 裡面的算法跟“智能”有什麼關係。而“機器學習”這個名字,基本是一個幌子。很多人都看出來了,機器學習說白了就是統計學裡面的“擬合函數”,換了一個具有迷惑性的名字而已。
人工智能的研究者們總是喜歡抬出“神經元”一類的名詞來嚇人,跟你說他們的算法是受了人腦神經元工作原理的啟發。注意了,“ 啟發 ”是一個非常模棱兩可的詞,由一個東西啟發得來的結果,可以跟這個東西毫不相干。比如我也可以說,Yin語言的設計是受了九yin真經的啟發:P
世界上這麼多AI 研究者,有幾個真的研究過人腦,解刨過人腦,拿它做過實驗,或者讀過腦科學的研究成果?最後你發現,幾乎沒有AI 研究者真正做過人腦或者認知科學的研究。著名的認知科學家Douglas Hofstadter 早就在接受采訪時指出,這幫所謂“AI 專家”,對人腦和意識(mind)是怎麼工作的,其實完全不感興趣,也從來沒有深入研究過,卻號稱要實現“通用人工智能”(Artificial General Intelligence, AGI),這就是為什麼AI 直到今天都只是一個虛無的夢想。
識別系統和語言理解
縱觀歷史上機器學習能夠做到的事情,都是一些字符識別(OCR),語音識別,人臉識別一類的,我把這些統稱為“識別系統”。當然,識別系統是很有價值的,OCR 是非常有用的,我經常用手機上的語音輸入法,人臉識別對於警察和間諜機關,顯然意義重大。然而很多人因此誇口,說我們可以用同樣的方法(機器學習,深度學習),實現“人類級別的智能”,取代很多人的工作,這就是神話了。
識別系統跟真正理解語言的“人類智能”,其實相去非常遠。說白了,這些識別系統,也就是統計學的擬合函數能做的事情:輸出一堆像素或者音頻,輸出一個個的單詞文本。很多人分不清“文字識別”和“語言理解”的區別。OCR 和語音識別系統,雖然能依靠統計的方法,“識別”出你說的是哪些字,它卻不能真正“理解”你在說什麼。
聊一點深入的話題,看不懂的人可以跳過這一段。“識別”和“理解”的差別,就像程序語言裡面“語法”和“語義”的差別。程序語言的文本,首先要經過詞法分析器(lexer),語法分析器(parser),才能送進解釋器(interpreter),只有解釋器才能實現程序的語義。類比一下,自然語言的語音識別系統,其實只相當於程序語言的詞法分析器(lexer)。
大部分的AI系統裡面連語法分析器(parser)都沒有,所以主謂賓,句子結構都分析不清楚,更不要說理解其中的含義了。IBM的語音識別專家Frederick Jelinek曾經開玩笑說:“每當我開掉一個語言學家,識別率就上升了。”其原因就是語音識別僅相當於一個lexer,而語言學家研究的是parser以及interpreter 。當然了,你們幹的事情太初級了,所以語言學家幫不了你們,但這並不等於語言學家是沒有價值的。
很多人語音識別專家以為語法分析(parser)是沒用的,因為人好像從來沒有parse 過句子,就理解了它的意義。然而他們沒有察覺到,人其實必須要不知不覺地parse 有些句子,才能理解它的含義。比如這樣一個句子:“我並不完全反對去游泳這個提議。” 我問你,一個不能正確parse 句子的機器,它如何知道你到底想去游泳,還是不想去?這個機器很可能看到“完全”,“反對”,“游泳”,…… 然後就根據關鍵字做出判斷,認為你不想去游泳。它有可能會考慮那個“不”字,可是這個“不”字在句子裡的位置,決定了它否認的結構。沒有語法分析,你就不可能正確的理解它到底在否定什麼。
製造自然語言的parser 有多難?很多人可能沒有試過。沒想到吧,我做過這事:) 在Indiana 的時候,我為了湊足學分,修了一門NLP 課程,跟幾個同學一起實現了一個英語的parser。你可能想不到有多困難,你不止需要深刻理解編程語言的parser 理論,還得依靠大量的例子和數據,才能解開人類語言裡面的各種歧義。我的合作夥伴是專門研究NLP 的,什麼Haskell,類型系統,category theory,什麼GLR parsing 之類…… 都弄得很溜。然而就算如此,我們的英語parser 也只能處理最簡單的句子,還錯誤百出,最後蒙混過關:P
經過了語法分析,得到一棵“語法樹”,你才能傳給人腦里語言的理解中心(類似程序語言的“解釋器”)。解釋器“執行”這個句子,為相關的名字找到對應的“值”,進行計算,才能得到句子的含義。至於人腦如何為句子裡的詞彙賦予“意義”,如何把這些意義組合在一起,形成“思維”,這個問題似乎沒有人很明白。至少,這需要大量的實際經驗,這些經驗是一個人從生下來就開始積累的。我們製造的機器完全不具備這些經驗,我們不知道如何才能讓他獲得經驗,也不知道這些經驗在人腦裡面是什麼樣的結構,如何組織的。所以機器要真的理解一個句子,真的是登天一樣的困難。
這就是為什麼Hofstadter 說:“一個機器要能理解人說的話,它必須要有腿,能夠走路,去觀察世界,獲得它需要的經驗,它必須能夠跟人一起生活,體驗他們的生活和故事… …” 最後你發現,製造這樣一個機器,比養個小孩困難太多了,這不是吃飽了沒事幹是什麼。
機器對話系統和人類客服
各大公司最近叫得最響亮的“AI 技術”,就是Siri,Cortana,Google Assistant,Amazon Echo 一類含有語音識別功能的工具,叫做“個人助手”。這些東西里面,到底有多少可以叫做“智能”的東西,我想用過的人都應該明白。我每一次試用Siri 都被它的愚蠢所折服,可以讓你著急得砸了水果手機。那另外幾個同類,也沒有好到哪裡去。
很多人被“微軟小冰”忽悠過,咋一看這傢伙真能理解你說的話呢!然而聊一會你就發現,小冰不過是一個“網絡句子搜索引擎”。它只是按照你句子裡的關鍵字,隨機搜出網上已有的句子。大部分這類句子出自問答類網站,比如百度知道,知乎。一個很簡單的實驗,就是反復發送同一個詞給小冰,比如“王垠”,看它返回什麼內容,然後拿這個內容到Google 或者百度搜索,你就會找到那個句子真正的出處。人都喜歡自欺欺人,看到幾個句子回答得挺“俏皮”,就以為它有智能,而其實它是隨機搜出一個句子,牛頭不對馬嘴,所以你才感覺“俏皮”。比如,你跟小冰說:“王垠是誰?”,她可能回答:“王垠這是要變段子手麼。”
心想多可愛的妹子,不正面回答你的問題,有幽默感!然後你在百度一搜,發現這句話是某論壇裡面黑我的人說的。小冰只是隨機搜索出這句子,至於幽默感,完全是你自己想像出來的。很多人跟小冰對話,喜歡只把其中“符合邏輯”或者“有趣”的部分截圖下來,然後驚呼:“哇,小冰好聰明好有趣!” 他們沒有告訴你的是,沒貼出來的對話,很多都是雞同鴨講。
IBM 的Watson 系統在Jeopardy 遊戲中戰勝了人,很多人就以為Watson 能理解人類語言,具有人類級別的智能。這些人甚至都不知道Jeopardy 是怎麼玩的,就盲目做出判斷,以為Jeopardy 是一種需要理解人類語言才可以玩的遊戲。等你細看,發現Jeopardy 就是很簡單的“猜謎”遊戲,題目是一句話,答案是一個名詞。比如:“有個歌手去年得了十項格萊美獎,請問他是誰?” 如果你理解了我之前對“識別系統”的分析,就會發現Watson 也是一種識別系統,它的輸入是一個句子,輸出是一個名詞。一個可以玩Jeopardy 的識別系統,可以完全不理解句子的意思,而是依靠句子裡出現的關鍵字,依據分析大量語料得到的擬合函數,輸出一個單詞。世界上那麼多的名詞,到哪裡去找這樣的語料呢?這裡我給你一個Jeopardy 謎題作為提示:“什麼樣的網站,你給它一個名詞,它輸出一些段落和句子,給你解釋這個東西是什麼,並且提供給你各種相關信息?” 很容易猜吧?你只需要把這種網站的內容掉一個頭,製造一個神經網絡,輸入句子,輸出名詞,就可以製造出可以玩Jeopardy 的機器來,而且它很容易超越人類玩家(為什麼?)。其實為了驗證Watson 是否理解人類語言,我早些時候去Watson 的網站玩過它的“客服demo”,結果完全是雞同鴨講,大部分時候Watson 回答:“我不清楚你在說什麼。你是想要……” 然後列出一堆選項,1,2,3……
當然,我並不是說這些產品完全沒有價值。我用過Siri 和Google Assistant,我發現它們還是有用的,特別是在開車的時候。因為開車時操作手機容易出事,所以我可以利用語音控制。比如我可以對手機說:“導航到最近的加油站。” 然而實現這種語音控制,根本不需要理解語言,你只需要用語音識別輸入一個函數調用:導航(加油站)。個人助手在其它時候用處都不大。我不想在家里和公共場所使用它們,原因很簡單:我懶得說話,或者不方便說話。點擊幾下屏幕,我就可以精確地做到我想要的事情,這比說話省力很多,也精確很多。個人助手完全不理解你在說什麼,這種局限性本來無可厚非,可以用就行了,然而各大公司最近卻拿個人助手這類東西來煽風點火,誇大其中的“智能”成分,閉口不提他們的局限性,讓外行們以為人工智能就快實現了,這就是為什麼我必須鄙視一下這種做法。
舉個例子,由於有了這些“個人助手”,有人就號稱類似的技術可以用來製造“機器客服”,使用機器代替人作為客服。他們沒有想清楚的是,客服看似“簡單工作”,跟這些語音控制的玩意比起來,難度卻是天壤之別。客服必須理解公司的業務,必須能夠精確地理解客戶在說什麼,必須形成真正的對話,要能夠為客戶解決真正的問題,而不能只抓住一些關鍵字進行隨機回复。另外,客服必須能夠從對話信息,引發現實世界的改變,比如呼叫配送中心停止發貨,向上級請求滿足客戶的特殊要求,拿出退貨政策跟客戶辯論,拒絕他們的退貨要求,抓住客戶心理,向他們推銷新服務等等,各種需要“人類經驗”才能處理的事情。所以機器能不但要能夠形成真正的對話,理解客戶的話,它們還需要現實世界的大量經驗,需要改變現實世界的能力,才可能做客服的工作。由於這些個人助手全都是在忽悠,所以我看不到有任何希望,能夠利用現有的技術實現機器客服。
連客服這麼按部就班的工作,機器都無法取代,就不用說更加複雜的工作了。很多人看到AlphaGo的勝利,以為所謂Deep Learning終究有一天能夠實現人類級別的智能。在之前的一篇文章裡,我已經指出了這是一個誤區。很多人以為人覺得困難的事情(比如圍棋),就是體現真正人類智能的地方,其實不是那樣的。我問你,心算除法(23423451345 / 729)難不難?這對於人是很難的,然而任何一個傻電腦,都可以在0.1秒之內把它算出來。圍棋,國際象棋之類也是一樣的原理。這些機械化的問題,其實不能反應真正的人類智能,它們體現的只是大量的蠻力。
縱觀人工智能領域發明過的嚇人術語,從Artificial Intelligence 到Artificial General Intelligence,從Machine Learning 到Deep Learning,…… 我總結出這樣一個規律:人工智能的研究者們似乎很喜歡製造嚇人的名詞,當人們對一個名詞失去信心,他們就會提出一個不大一樣的,新的名詞,免得人們把對這個名詞的失望,轉移到新的研究上面。然而這些名詞之間,終究是換湯不換藥。因為沒有人真的知道人的智能是什麼,所以也就沒有辦法實現“人工智能”。
生活中的每一天,我這個“前AI 狂熱者”都在為“人類智能”顯示出來的超凡能力而感到折服。甚至不需要是人,任何高等動物(比如貓)的能力,都讓我感到敬畏。我發自內心的尊重人和動物。我不再有資格拿“人類”來說事,因為面對這個詞彙,任何機器都是如此的渺小。
紀念我的聊天機器人helloooo
乘著這個熱門話題,現在我來講一下,十多年前我自己做聊天機器人的故事……
如果你看過PAIP或者其它的經典人工智能教材,就會發現這些機器對話系統,最初的思想來自一個叫“ ELIZA ”的AI程序。Eliza被設計為一個心理醫生,跟你對話排憂解難,而它內部其實就是一個類似小冰的句子搜索引擎,實現方式完全用正則表達式匹配搞定。比如,Eliza的某個規則可以說,當用戶說:“我(.*)”,那麼你就回答:“我也$1……”其中$1代替原句子裡的一部分,造成一種“理解”的效果。比如用戶也許會說:“我好無聊。” Eliza就可以說:“我也好無聊……”然後這兩個無聊的人就惺惺相惜,有伴了。
有些清華的老朋友也許還記得,十多年前在清華的時候,我做了一個聊天機器人放在水木清華BBS,紅極一時,所以我也可以算是網絡聊天機器人的鼻祖了:) 我的聊天機器人,水木賬號叫helloooo。helloooo 的性格像蠟筆小新,是一個調皮又好色的小男孩。它內部採用的就是類似Eliza 的做法,根本不理解句子,甚至連語料庫都沒有,神經網絡也沒有,裡面就是一堆我事先寫好的正則表達式“句型”而已。你輸入一個句子,它匹配之後,從幾種回復之中隨機挑一個,所以你反复說同樣的話,helloooo 的回答不會重複,如果你故意反复說同樣的話,最後helloooo 會對你說:“你怎麼這麼無聊啊?”或者“你有病啊?” 或者轉移話題,或者暫時不理你…… 這樣對方就不會明顯感覺它是一個傻機器。
就是這麼簡單個東西。出乎我意料的是,helloooo 一上網就吸引了很多人。一傳十十傳百,每天都不停地有人發信息跟他聊。由於我給他設置的正則表達式和回複方式考慮到了人的心理,所以helloooo 顯得很“俏皮”,有時候還可能裝傻,搗蛋,延遲回复,轉移話題,還可能主動找你聊天,使用超過兩句的小段子,…… 各種花樣都有。最後,這個小色鬼贏得了好多妹子們的喜愛,甚至差點約了幾個出去呢!:P 在這點上,helloooo 可比小冰強很多。小冰的技術含量雖然多一些,數據多很多,然而helloooo 感覺更像一個人,也更受歡迎。這說明,我們其實不需要很高深的技術,不需要理解自然語言,只要你設計巧妙,抓住人的心理,就能做出人們喜愛的聊天機器。
後來,helloooo 終於引起了清華大學人智組研究生的興趣,來問我:“你這裡面使用的什麼語料庫做分析啊?” 我:“&%&¥@#@#%……”
自動編程是不可能的
現在回到有些人最開頭的提議,實現自動編程系統。我現在可以很簡單的告訴你,那是不可能實現的。微軟的Robust Fill之類,全都是在扯淡。我對微軟最近乘著AI熱,各種煽風點火的做法,表示少許鄙視。不過微軟的研究員也許知道這些東西的局限,只是國內小編在誇大它的功效吧。
你仔細看看他們舉出的例子,就知道那是一個玩具問題。人給出少量例子,想要電腦完全正確的猜出他想做什麼,那顯然是不可能的。很簡單的原因,例子不可能包含足夠的信息,精確地表達人想要什麼。最最簡單的變換也許可以,然而只要多出那麼一點點例外情況,你就完全沒法猜出來他想幹什麼。就連人看到這些例子,都不知道另一個人想幹什麼,機器又如何知道?這根本就是想實現“讀心術”。甚至人自己都可以是糊塗的,他根本不知道自己想幹什麼,機器又怎麼猜得出來?所以這比讀心術還要難!
對於如此弱智的問題,都不能100% 正確的解決,遇到稍微有點邏輯的事情,就更沒有希望了。論文最後還“高瞻遠矚”一下,提到要把這作法擴展到有“控制流”的情況,完全就是瞎扯。所以RobustFill 所能做的,也就是讓這種極其弱智的玩具問題,達到“接近92% 的準確率”而已了。另外,這個92% 是用什麼標準算出來的,也很值得懷疑。
任何一個負責的程序語言專家都會告訴你,自動生成程序是根本不可能的事情。因為“讀心術”是不可能實現的,所以要機器做事,人必須至少告訴機器自己“想要什麼”,然而表達這個“想要什麼”的難度,其實跟編程幾乎是一樣的。實際上程序員工作的本質,不就是在告訴電腦自己想要它幹什麼嗎?最困難的工作(數據結構,算法,數據庫系統)已經被固化到了庫代碼裡面,然而表達“想要幹什麼”這個任務,是永遠無法自動完成的,因為只有程序員自己才知道他想要什麼,甚至他自己都要想很久,才知道自己想要什麼……
有句話說得好:編程不過是一門失傳的藝術的別名,這門藝術的名字叫做“思考”。沒有任何機器可以代替人的思考,所以程序員是一種不可被機器取代的工作。雖然好的編程工具可以讓程序員工作更加舒心和高效,任何試圖取代程序員工作,節省編程勞力開銷,剋扣程序員待遇,試圖把他們變成“可替換原件”的做法(比如Agile,TDD) ,最終都會倒戈,使得雇主收到適得其反的後果。同樣的原理也適用於其它的創造性工作:廚師,髮型師,畫家,……
所以別妄想自動編程了。節省程序員開銷唯一的辦法,是邀請優秀的程序員,尊重他們,給他們好的待遇,讓他們開心安逸的生活和工作。同時,開掉那些滿口“Agile”,“Scrum”,“TDD”,“ 軟件工程 ”,光說不做的扯淡管理者,他們才是真正浪費公司資源,降低開發效率和軟件質量的禍根。
傻機器的價值
我不反對繼續投資研究那些有實用價值的人工智能(比如人臉識別一類的),然而我覺得不應該過度誇大它的用處,把注意力過分集中在它上面,彷彿那是唯一可以做的事情,彷彿那是一個劃時代的革命,彷彿它將取代一切人類勞動。
我的個人興趣其實不在人工智能上面。那我要怎麼創業呢?很簡單,我覺得大部分人不需要很“智能”的機器,“傻機器”才是對人最有價值的,我們其實遠遠沒有開發完傻機器的潛力。所以設計新的,可靠的,造福於人的傻機器,應該是我創業的目標。當然我這裡所謂的“機器”,包括了硬件和軟件,甚至可以包括雲計算,大數據等內容。
只舉一個例子,有些AI 公司想研製“機器傭人”,可以自動打掃衛生做家務。我覺得這問題幾乎不可能解決,還不如直接請真正智能的——阿姨來幫忙。我可以做一個阿姨服務平台,方便需要服務的家庭和阿姨進行牽線搭橋。給阿姨配備更好的工具,通信,日程,支付設施,讓她工作不累收錢又方便。另外給家庭提供關於阿姨工作的反饋信息,讓家庭也省心放心,那豈不是兩全其美?哪裡需要什麼智能機器人,難度又高,又貴又不好用。顯然這樣的阿姨服務平台,結合真正的人的智能,輕而易舉就可以讓那些機器傭人公司死在萌芽之中。
當然我可能不會真去做個阿姨服務平台,只是舉個例子,說明許許多多對人有用的傻機器,還在等著我們去發明。這些機器設計起來雖然需要靈機一動,然而實現起來難度卻不高,給人帶來便利,經濟上見效也快。這些東西不對人的工作造成競爭,反而可能製造更多的就業機會。利用人的智慧,加上機器的蠻力,讓人們又省力又能掙錢,才是最合理的發展方向。
轉貼自: yinwang
留下你的回應
以訪客張貼回應