在前面的話
作者:許鐵-巡洋艦科技
https://www.zhihu.com/question/24588198/answer/139168611
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
引言
Google翻譯背后的科技被稱為機器翻譯。它改變了世界,在本來根本不可能的情況下讓(不同語言的)人們完成了溝通。
但我們都知道,在過去的15年里,高中學生已經使用Google翻譯...額 ...協助他們完成他們的西班牙語作業。這已經不是新聞了…?
事實證明,在過去兩年,深度學習已經完全改寫了我們的機器翻譯方法。那些對語言翻譯一無所知的深度學習研究人員正在利用一個個相對簡單的機器學習解決方案,來打敗世界上最好的專家建造的語言翻譯系統。
這一突破背后的技術被稱為序列到序列學習sequence to sequence learning。這是一項非常強大的技術,被用于解決許多種類的問題。在我們看到它如何被用于翻譯之后,我們還將學習這個算法是怎樣用來編寫AI聊天機器人和描述圖片的。
我們開始吧!
讓計算機翻譯
那么我們該如何編寫代碼,才能讓計算機翻譯人類的語言呢?
最簡單的方法,就是把句子中的每個單詞,都替換成翻譯后的目標語言單詞。這里有一個簡單的例子,把西班牙語逐字翻譯成英語:
我們只是用匹配的英語單詞替換每個西班牙單詞。
這很容易實現,因為你所需要是一本字典來查找每個單詞的翻譯。但結果并不好,因為它忽略了語法和上下文的聯系。
因此,下一件你可能要做的事,就是開始添加特定語言規則以改進結果。例如,你可能將兩個常用詞翻譯為詞組。你可能互換名詞和形容詞的順序,因為他們在西班牙語中以相反的順序出現:
這真的有效!如果我們就繼續添加更多的規則,直到我們可以應對每一部分語法,我們的程序應該就能夠翻譯任何句子了,對吧?
這就是最早的機器翻譯系統的工作原理。語言學家提出了許多復雜的規則,并逐一編程實現。一些世界上最聰明的語言學家在冷戰期間辛勤努力了多年,才創建出了一些更容易理解俄羅斯人交流的翻譯系統。
不幸的是,這種套路只對簡單問題適用,比如說像天氣預報這樣結構簡單的文檔。它對于真實世界的文字來說并不可靠。
問題是,人類語言并不總是遵循固定的規則。人類語言充滿了各種特殊情況,區域差異,或者干脆就不按套路出牌(#‵′)凸。我們說英語的方式更多地受到幾百年前入侵的人的影響,而不是由坐下來定義語法規則的人。
利用統計數據使計算機更好地翻譯
在基于規則的系統失效之后,一些新的翻譯方法被開發出來了,他們基于概率和統計的模型而不是語法規則。
建造一個基于統計的翻譯系統需要大量的訓練數據,其中完全相同的文本被翻譯成至少兩種語言。這種雙重翻譯的文本稱為平行語料庫parallel corpora。18世紀的科學家以同樣的方式在羅塞塔石碑上面從希臘語中找出埃及象形文字。(譯者注:羅塞塔石碑,高1.14米,寬0.73米,制作于公元前196年,刻有古埃及國王托勒密五世登基的詔書。石碑上用希臘文字、古埃及文字和當時的通俗體文字刻了同樣的內容,這使得近代的考古學家得以有機會對照各語言版本的內容后,解讀出已經失傳千余年的埃及象形文之意義與結構,而成為今日研究古埃及歷史的重要里程碑)以同樣的方式,計算機可以使用平行語料庫猜測如何將文本從一種語言轉換為另一種語言。
幸運的是,有很多雙重翻譯的文本已經存在在世界的各個角落。例如,歐洲議會將其訴訟程序翻譯成21種語言。因此,研究人員經常使用這些數據來幫助建造翻譯系統。
訓練數據通常令人興奮!但這只是無數條政府文件而已...
用概率的思維思考
統計翻譯系統的根本不同,在于它們試圖生成不止一個精確的翻譯。相反,他們生成成千上萬種可能的翻譯,然后他們按照可能最正確的給這些翻譯排名。他們通過與訓練數據的相似性來估計有多“正確”。以下是它的工作原理:
第1步:將原始句子分成塊
首先,我們將我們的句子分成簡單的塊,每一塊都可以輕松翻譯:
第2步:找到每一塊的所有可能的翻譯
接下來,我們將翻譯每塊文字,我們將通過尋找我們數據庫中所有人類翻譯過的相同詞塊來完成我們的翻譯。
要著重注意的是,我們不只是在一本簡簡單單的翻譯字典中查找這些詞塊。相反,我們看到是真實的人在真實的句子中如何翻譯這些相同的詞。這有助于我們捕獲到在不同語境中所有不同的表達方式:
即使最常見的短語也有很多種可能的翻譯。
這些可能的翻譯中的有一些會比其他翻譯更頻繁地使用。根據我們訓練數據中每個翻譯出現的頻率,我們可以給它設定一個分數。
例如,有人說“Quiero”更多的時候是指“我想要”而不是“我嘗試”。所以,我們可以使用我們訓練數據中 “Quiero”被翻譯成“我想要”的頻率,給“我想要”這個翻譯更多的權重。
第3步:生成所有可能的句子,找到最有可能的那句。
接下來,我們將使用這些詞塊的每種可能翻譯來組合生成一堆可能的句子。
從第二步中列出的翻譯過的詞塊中,我們可以通過不同組合方式生成將近2,500個不同的句子。下面是一些例子:
I love | to leave | at | the seaside | more tidy.
I mean | to be on | to | the open space | most lovely.
I like | to be |on | per the seaside | more lovely.
I mean | to go | to | the open space | most tidy.
但在真實世界中,因為有不同的語序和詞塊分解方法,所以實際上有更多可能的詞塊組合:
I try | to run | at | the prettiest | open space.
I want | to run | per | the more tidy | open space.
I mean | to forget | at | the tidiest | beach.
I try | to go | per | the more tidy | seaside.
現在需要掃描所有這些生成的句子,找到那個聽起來“最像人話”的句子。
為此,我們將每個生成的句子與來自英語書籍和新聞故事的數百萬個真實句子進行比較。我們擁有的英語文本越多越好。
我們采用這種可能的翻譯:
I try | to leave | per | the most lovely | open space.
很可能沒有人用英語寫過這樣的句子,所以它不會與我們的數據庫任何句子非常相似。我們給這個可能的翻譯設定一個低概率的得分。
但看看下面這個可能的翻譯:
I want | to go | to | the prettiest | beach.
這個句子和我們的訓練集中的句子很類似,所以它將獲得一個高概率的得分。
在嘗試過所有可能的句子之后,我們會選擇那個,既是最有可能的詞塊翻譯,又與真實英語句子最相似的句子。
我們最后的翻譯將是“I want | to go | to | the prettiest | beach.
我想去最漂亮的海灘。”不錯!
有里程碑意義的統計機器翻譯
當有足夠多的訓練數據的時候,統計機器翻譯系統的性能要優于基于語言規則的系統。 Franz Josef Och基于這些想法并做出了改進,并在21世紀初使用它們構建了Google翻譯。機器翻譯終于可以被全世界使用。
早期的時候,基于概率翻譯的“愚蠢”方法居然比語言學家設計規則系統做的更好,這讓每個人都感到驚訝。這導致了80年代的時候,研究人員會(有點刻薄的)說:
“每當我炒了一個語言學家魷魚的時候,我的翻譯準確度就會上升。” Frederick Jelinek。
統計機器翻譯的局限性
雖然統計機器翻譯系統效果還不錯,但是他們難于構建和維護。每一對需要翻譯的新語言,都需要專業人士對一個全新的多步驟“翻譯流水線”進行調試和修整。
因為構建這些不同的流水線需要做太多工作,所以我們必須進行權衡。如果你要用Google翻譯把格魯吉亞語翻譯成泰盧固語(印度東部德拉維拉語言),那么作為一個中間步驟,它必須先翻譯成英語。因為并沒有太多格魯吉亞到泰盧固語的翻譯需求,所以在這一對語言上投入太多并沒有太大意義。相比于英語翻譯到法語,它可能會使用一個更低級的“翻譯流水線”。
如果我們能讓計算機為我們做所有令人討厭的開發工作,這不更好么?
讓電腦翻譯的更好——無需昂貴的專家們
機器翻譯的核心是一個黑盒系統,它通過查看訓練數據,自己就可以學習如何翻譯。使用統計機器翻譯,人們仍然需要建立和調整多步驟的統計模型。
2014年,KyungHyun Cho的團隊取得了突破。他們發現了一種應用深度學習來構建這種黑盒系統的方法。他們的深度學習模型采用平行語料庫,并使用它來學習如何在無任何人為干預的情況下在這兩種語言之間進行翻譯。
兩個宏偉的方法使這成為可能 - 循 環神經網絡和編碼。通過巧妙地結合這兩個想法,我們可以建立一個能夠自學的翻譯系統。
未完待續ing
fastai深度學習社區
次回答了一個關于怎樣自學電腦操作比較快的問題,現在我把我的答案整理升級,增加了鍵盤的快速入手使用方法。
1.開機和關機
作為完全初學者,首先需要學會正確的開關機。下圖我整理了一些常見主機的開關機鍵與重啟(restart)按鍵。
常見主機上的開關機鍵和重啟鍵
一般來說,較大的一個是開關機鍵,較小的一個為重啟鍵。在電腦處于關閉狀態時,按一下開關機鍵即為開機。當電腦處于開機狀態時,按一下重啟按鍵,電腦會重新啟動。電腦處于開機狀態時,長按開關機鍵,電腦會強制關機,不過一般不建議這樣做,對主機有損害(除非電腦死機)。正確的關機需要在操作系統里面電腦關機,點擊左下角的開始--關機,如下圖。然后等待電腦自動關閉即可。
關機
2.熟悉鼠標如何使用
鼠標按鍵
左鍵:單擊選中,雙擊打開,點住不松時移動鼠標可以拖動文件
右鍵:光標移動到待選文件上,單機右鍵會出現一些功能操作,包括:復制,重命名,刪除,壓縮,發送,屬性等等,如下圖。
滾輪:打開網頁,或者文件夾后,使用滾輪可以進行上下滑動網頁或者文件夾里的內容,當然Word,PPT,PDF等等文檔里面也是如此。
3.熟悉鍵盤的使用
鍵盤各區域圖
鍵盤的主要作用是為了打字,次要作用也可以快速控制電腦(代替鼠標)。作為初學者,熟練的掌握好打字以及簡單編輯功能就足夠了。
第一步:熟練掌握26個英文字母。
第二步:記住26個英文字母在鍵盤上的順序。第一行拆分成兩句:Q W E R T , Y U I O P,很押韻,方便記憶。第二行拆分成兩句:A S D F G , H J K L 。第三行依然拆分成兩句:Z X C V B , N M .可以發現Z X C V B 的B跟前面的T、P、G又是押韻,最后剩下N、M很輕松就能記住了。
標準指法
第三步:指法與打字
標準指法就是把雙手依照上圖的位置放在鍵盤上,讓你的左手食指放在字母F上,右手食指放在字母J上(F鍵和J鍵上都有一個小突起,我們通常稱之為盲打坐標),然后將四指并列對齊分別放在相鄰的鍵鈕上。了解每個手指負責敲擊哪些按鍵。
新手在練習打字的時候,要逼自己別看鍵盤來打字,盡量靠背誦回憶字母的位置。這樣摸索時間長了之后,就會形成肌肉記憶。
4.windows系統的基本操作
以window 7為例,初學者需要掌握的有以下內容,這些都可以在網絡上很容易的搜索到答案,都比較簡單。這里只把需要掌握的知識羅列出來。
如何打字;
如何使用瀏覽器查看所需要的內容;
如何使用即時通訊軟件、郵箱等;
如何使用移動U盤進行資料的轉移,備份等;
如何進行文件夾的創建,復制,剪切,重命名等;
如何進行文件的創建,復制,剪切,重命名,內容編輯,保存等;
當以上內容都熟練使用之后,還可以對計算機硬件做一些深入了解。比如CPU的工作原理,主流CPU品牌及價位;顯卡的品牌和價位,獨立顯卡和集成顯卡;機械硬盤/固態硬盤;內存(DDR3/DDR4)品牌;主板的幾種主流規格,包括什么主板支持幾代的內存條等;網卡、千兆網卡,獨立供電的千兆網卡;顯示器種類,直屏,曲屏,LCD,OLED,量子點,4K,8K等等;
相應的,軟件方面,熟練掌握一種文字處理軟件,像WPS、Office等都可以,后期還可以對計算機高級語言進行學習。
最后,學習電腦操作不要急于求成,要從頭開始學習,靠熟練的使用來循序漸進,在實際的使用中不斷增大自己的知識面。
信息技術日新月異的時代,計算機作為科技革命的重要產物,已經深入人類生活的每個角落。無論是在學術研究、工業制造還是日常生活中,計算機扮演著不可或缺的角色。因此,對于每一個渴望跟上時代步伐的人來說,掌握計算機的基本原理和操作方法,并培養出扎實的計算機思維能力成為了一項必不可少的技能。
一臺計算機如同一個精巧復雜的宇宙,它由微妙而精密的硬件系統與靈活多變的軟件資源共同構成。硬件,是這個宇宙中可以觸摸到的物質基礎;軟件,則是賦予這個宇宙靈魂和生命的非物質存在。
從硬件層面來看,中央處理器(CPU)是控制整個計算機運作的大腦;內存則像是暫時記憶空間,存放著正在處理中的數據和指令;而硬盤則是長期記憶庫,負責存儲各類文件和程序。輸入輸出設備則構成了人與計算機之間溝通的橋梁:我們通過鍵盤、鼠標等輸入設備將指令傳遞給計算機,再通過顯示器、打印機等輸出設備獲取計算機處理后的結果。
軟件系統是硬件生命力的延伸。操作系統如同城市中繁復的交通網絡,不僅調度著各種軟硬件資源,還提供著用戶界面以簡化人們對復雜設備操作的需求。編程語言則如同世界上多樣化的語言,它以一種規范化、結構化方式給予了創造者表達邏輯與創意思維的能力。開發工具則相當于工匠手中精良的工具箱,讓編寫程序成為一種高效而順暢的過程。
了解了這些組成元素之后,我們就可以把視線轉向計算機工作流程。這個過程分為輸入、處理以及輸出三個階段。首先用戶通過輸入設備向計算機發送消息,在那之后中央處理器開始進行分析和運算處理,并最終通過輸出設備將這一系列動作轉變為可見或者可用的結果。
計算機廣泛應用在各行各業,無論是進行天文學上億光年外星系研究數據分析、醫學領域內精準診斷病理圖像,還是家庭娛樂上觀看高清電影流暢體驗游戲。隨著技術進步和社會發展需求,新一代計算機展現出更加強大智能化功能、更小型化設計以及更快速度運算性能。
為了順應未來發展趨勢,在學習和理解計算機基本構造原理與功能操作并且,更重要地是培養起堅實有效的計算機思維。這種思維方式強調邏輯性與系統性:邏輯性體現在將復雜問題分解為簡單問題并逐一解決;系統性則意味著考慮問題時要全面分析各部分間相互關系,并將其融入到整體解決方案中去。
學習計算機基礎不僅使人們能夠使用現有技術完成任務,并且讓人們具有使用現有知識解決未知問題和挑戰未來可能出現技術問題能力。這些對提升職業競爭力、推動個人知識增長均至關重要。
歸結起來, 計算機基礎知識既包含對物質層面上架構原理及功能操作手法等認知, 又涵蓋對抽象層面上邏輯推理、系統分析等思維模式培養, 能有效拓展我們面臨問題時解決方法與思考路徑, 極大地增強我們在數字化世界里生存發展能力。
總之, 掌握穩固并全面深入地計算機知識體系, 不僅有利于適應社會發展不斷帶來挑戰, 同時也為持續推動科技前行提供源源不斷動力源泉, 這正昭示著我們今天學習它們必定迎得明日科技領域無限可能性開啟。