本雜誌開源,歡迎投稿。另有《誰在招人》服務,釋出程式設計師招聘資訊。合作請郵件聯絡([email protected])。
封面圖
上個月正式開放的杭州良渚玉湖公園,公園的設計象徵良渚文化和運河文化的連線。(via)
李開復梳理人工智慧
前些日子,我讀了李開復老師的兩本書:《AI·未來》(浙江人民出版社,2018)和《AI·未來進行式》(浙江人民出版社,2022)。
這兩本書都是面向社會大眾解釋 AI,不是技術類書籍,但是有一些段落,闡述 AI 概念。
李開復老師用通俗的語言來解釋,人工智慧、機器學習、神經網路、深度學習......這些詞到底是什麼意思?彼此有什麼關係?
我覺得,這些介紹對理解 AI 的體系,挺有啟發的。它們分散在各個章節,我將它們整理在一起。
為了行文連貫,我沒有完全照搬原文,而是用自己的語言重新敘述,如果有錯誤,也歸咎我。
(1)人工智慧
1956年夏天,電腦科學家約翰·麥卡錫(John McCarthy)首次提出"人工智慧"(AI)這個概念。
人工智慧指的是,透過軟體和硬體,來完成通常需要人類智慧才能完成的任務。它的研究物件,就是在機器上模擬人類智慧。
(2)機器學習
早期,人工智慧研究分成兩個陣營。
第一個陣營是規則式(rule-based)方法,又稱專家系統(expert systems),指的是人類寫好一系列邏輯規則,來教導計算機如何思考。
可想而知,對於複雜的、大規模的現實問題,很難寫出完備的、明確的規則。所以,這種方法的進展一直很有限。
第二個陣營就是機器學習(machine learning),指的是沒有預置的規則,只是把材料提供給計算機,讓機器透過自我學習,自己發現規則,給出結果。
(3)神經網路
神經網路(neural network)是機器學習的一種主要形式。
神經網路就是在機器上模擬人腦的結構,構建類似生物神經元的計算網路來處理資訊。
一個計算節點就是一個神經元,大量的計算節點組成網路,進行協同計算。
神經網路需要極大的算力,以及海量的訓練材料。以前,這是難以做到的,所以20世紀70年代開始,就陷入了停滯,長期沒有進展。
(4)深度學習
深度學習是神經網路的一種實現方法,在20世紀80年代由傑弗裡·辛頓提出。它讓神經網路研究重新復活。
深度學習是一種讓多層神經元可以進行有效計算的方法,大大提高了神經網路的效能。"深度學習"這個名字,就是比喻多層神經元的自主學習過程。
多層神經元包括一個輸入層和一個輸出層,它們之間有很多中間層(又稱隱藏層)。以前,計算機算力有限,只能支撐一兩個中間層,深度學習使得我們可以構建成千上萬箇中間層的網路,具有極大的"深度"。
(5)Transformer
早些年,深度學習用到的方法是卷積神經網路(CNN)和迴圈神經網路(RNN)。
2017年,谷歌的研究人員發明了一種新的深度學習處理方法,叫做 Transformer(轉換器)。
Transformer 不同於以前的方法,不再一個個處理輸入的單詞,而是一次性處理整個輸入,對每個詞分配不同的權重。
這種方法直接導致了2022年 ChatGPT 和後來無數生成式 AI 模型的誕生,是神經網路和深度學習目前的主流方法。
由於基於 Transformer 的模型需要一次性處理整個輸入,所以都有"上下文大小"這個指標,指的是一次可以處理的最大輸入。
比如,GPT-4 Turbo 的上下文是 128k 個 Token,相當於一次性讀取超過300頁的文字。上下文越大,模型能夠考慮的資訊就越多,生成的回答也就越相關和連貫,相應地,所需要的算力也就越多。
豆包 MarsCode 動手實驗室(杭州站)
先提一下,上週說的全國 AI 程式設計挑戰賽。
應用賽道的作品提交,從12月16日已經開始了,大家可以上傳自己用 AI 完成的作品了。
演算法賽道目前還在報名中,只要你有信心,在 AI 的輔助下解出演算法題,不妨報名試試,也是一種體驗和鍛鍊。
比賽規則和報名連結,請訪問這裡,也可以看上週的週刊。
(此處有分隔線)
本週介紹的活動,是12月28日(星期六)下午兩點,在杭州的位元組工區舉行的豆包 MarsCode 動手實驗室。
到時,大家可以現場深度體驗豆包 MarsCode 的 AI 程式設計能力,並跟位元組的同學當面交流。在動手環節,你可以用 AI 實現自己的創意。如果你的作品很優秀,還有機會直通 AI 程式設計挑戰賽的決賽。
活動的詳細介紹,以及報名連結,請訪問這裡。
科技動態
1、硬碟打孔機
硬碟報廢時,一般需要擦除資料。最保險的方法,莫過於物理破壞硬碟。
但是,這樣很費事,你要找把錘子,把硬碟敲碎了。
為了解決這個問題,一家日本公司推出了"硬碟打孔機"。這種機器可以在硬碟上輕鬆打四個孔,保證徹底破壞資料。
它採用電動液壓系統,產生12噸的壓力,足以穿透任何硬碟。
它的尺寸為 410 x 289 x 187 毫米,跟臺式電腦差不多大小,但是重達18公斤,適合那些有成千上萬硬碟需要銷燬的大公司。
2、沙子國際象棋
一位英國設計師用沙子作為材料,3D 列印了一套國際象棋。
他說,這樣做只是為了追求一種奇特的感覺。沙子是一種無形且流動的材料,塑造成堅固耐用的東西,讓人感到難以把握、隨時可能變化。
而且,沙子表面是不光滑的,當你用沙子下棋時,會有真實的、與眾不同的觸覺。
3、玻璃磚
大家考慮過嗎,房子為什麼需要牆?難道不能建造一所沒有牆、全部是窗戶的房子嗎?
回答是不能,因為建築的重量由牆承受,窗戶不承受重量。如果把牆全改成窗戶,建築物就會倒塌。
那麼,能不能用玻璃來造牆呢?玻璃既可以承重,又可以透光。
麻省理工學院的科學家,最近就發明了這樣一種全透明的玻璃磚(上圖),根據測試具有跟普通磚相同的承重能力。
除了透光,玻璃磚還有一個好處,可以重新利用。只要高溫加熱,玻璃磚就會融化,能夠塑造成其他形狀,還能 3D 列印,但這也導致它不防火。
總的來說,玻璃磚比紅磚更環保,在很多場合有推廣潛力。
4、其他
(1)本週發生了一筆史上最大的風險投資,AI 公司 Databricks 一次性募集了100億美元。
(2)GitHub 宣佈,程式設計助手 GitHub Copilot 向所有使用者免費開放。
(3)OpenAI 推出了免費電話 1-800-ChatGPT,北美使用者可以撥打該電話,跟 AI 語音聊天,每月額度為15分鐘。
(4)小米官方開始支援,小米物聯網裝置接入智慧家居管理助手 Home Assistant。
文章
1、組合語言的一點入門介紹(中文)
這篇短文通俗解釋了組合語言的基本概念。
2、CSS 網格區塊詳解(英文)
這篇長文詳細介紹 CSS grid 佈局的區塊功能(template area)。
3、網頁如何插入 JSON-LD 語義資料(中文)
本文詳細介紹網頁的 JSON-LD 資料塊,用來插入機讀的語義資料。
4、13個對前端開發有用的 Chrome 外掛(英文)
本文介紹13個用於前端開發的 Chrome 外掛。
5、谷歌不再是最好的搜尋引擎(英文)
本文是一篇新聞分析,作者認為 Perplexity 的 AI 搜尋體驗已經優於谷歌了。
6、如何為 Windows 新增6個 macOS 最好的功能(英文)
一篇 Windows 使用技巧,教你怎麼為 Windows 新增一些 macOS 功能,比如檔案瀏覽器可以文件預覽。
工具
1、Presenterm
將 Markdown 檔案轉成幻燈片,在命令列播放的開源工具。(@lengyijun 投稿)
2、Rslib
製作 JavaScript 軟體包的工具,可以直接開發元件庫和命令列工具。(@fi3ework 投稿)
3、Midscene.js
AI 驅動的網頁 UI 自動化測試框架,透過文字描述,生成 UI 測試用例。(@yuyutaotao 投稿)
4、wechatDataBackup
Windows 桌面 PC 端的微信聊天記錄一鍵匯出。(@git-jiadong 投稿)
5、MoeMail
基於 Next.js + Cloudflare 技術棧構建的臨時郵箱服務,線上體驗。(@beilunyang 投稿)
6、my-github-2024
一個 Python 程式,生成你在2024年的 GitHub 程式碼提交統計。(@WCY-dt 投稿)
7、Vanilla
Canonical 公司的 CSS 框架,就是 Ubuntu 官網採用的樣式。
8、OpenAuth
網頁登入的第三方認證的整合庫。
9、Schemio
基於 Web 的示意圖視覺化編輯器。
10、Buzee
一個桌面軟體,提供本地檔案的全文搜尋(包括圖片裡面的文字),支援 Windows 和 Mac。
AI 相關
1、Hika AI
免費的 AI 搜尋。(@atlas-comstock 投稿)
2、Slea.ai
免費的 AI Logo 生成器。(@aaamomo64 投稿)
3、AI 音效生成器
免費生成各種音效,比如雨聲、風聲。(@aurthur 投稿)
資源
1、SQL 風格指南
一份書寫 SQL 語句的風格約定。
2、顏色程式碼表
線上配色設計工具集,做在一個網站。(@nettsz 投稿)
圖片
1、機器蜻蜓
美國首都華盛頓的中央情報局博物館,有一隻上個世紀70年代製造的機器蜻蜓。
它其實是一架微型直升機,飛到目標物件附近,竊聽對方的談話。
這隻蜻蜓可以飛200米,然後落下來,透過鐳射捕捉空氣振動,來還原談話聲。
但是,它不防風,也難以控制,所以從來沒有實際用過。
2、荷蘭的郵資程式碼
荷蘭寄信不用郵票,而是用一種9個字母和數字組成的程式碼。
你花錢買一個程式碼,以 3 x 3 的格式寫在信封上,就能代替郵票,作為付款證明。
因為程式碼的有效期只有五天(以郵戳為準),需要購買後及時寄出,被猜到的可能性很小。
文摘
1、沒有程式設計生產力這樣的東西
正如馬丁·福勒(Martin Fowler)所觀察到的那樣,程式設計師的程式設計生產力無法有效地衡量,因為它不存在。
軟體開發並不是一項必然會產生任何東西的活動。
假設你有兩個開發人員在同一個專案上工作,並且偶然地,他倆在同一天接受了相同的任務。
甲寫了一個1000行的框架,完美地解決了這個問題。程式碼編寫良好,並經過充分測試,每一步都有詳細記錄。
乙則是當天去了公園,一邊喂鴿子一邊思考問題,然後漫步回到辦公室,刪除了100行程式碼,部署了更改......問題就解決了。
請問誰的生產力更高?
回答是,這不重要。重要的是乙解決了問題,同時降低了團隊的長期維護成本。甲也解決了這個問題,但是他透過增加程式碼,增加了維護成本,因此(在其他條件相同的情況下)他的解決方案較差。
我們能說,乙具有更高的生產力嗎?顯然,很難找到程式設計生產力的正確衡量指標。
我認為,優秀的軟體開發者所做的就是解決問題。但是,生產力的衡量指標,比如程式碼、文件、資料等等,都只是解決問題的工具,並不是解決問題本身。
言論
1、
我寫 SQLite 的時候,從來沒人教過我 B 樹的知識。我需要自己實現 B 樹,我就從書架取下高德納的《計算機程式設計藝術》,找到了 B 樹的章節。他描述了演算法,我就照著實現。
有趣的是,高德納詳細介紹了搜尋 B 樹和插入 B 樹的演算法,沒有提供從 B 樹刪除資料的演算法,這是放在本章末尾的練習。所以我在實現自己的 B 樹之前,還必須先做完該章的練習。謝謝高德納,我真的很感激。
-- 理查德·希普《SQLite 不為人知的故事》
2、
瑞典南部的馬爾默市,洗一次10分鐘的淋浴,電費高達2.65歐元(約20元人民幣)。原因是該市接入的是德國電網,德國能源短缺,推高了電價。
-- 《瑞典能源危機》
3、
職業生涯最重要的一課是,你需要認識到,你工作的目的不在於使得公司的客戶滿意,而在於使得那些控制你的加薪、獎金和晉升的人滿意。
-- Hacker News 讀者
4、
正在開發的水下無人機技術,會使得以航空母艦為中心的海軍戰略過時,從而大幅削減軍事開支。
舉例來說,美國開發的水下無人機 Orca XLUUV,可以攜帶8噸的有效載荷,行駛數千英里,並且不需要長時間浮出水面。
-- Hacker News 讀者
5、
我第一次嘗試 MidJourney(文生圖工具)和 Suno(文生音樂工具)時,我想知道未來是否每個人都會成為數字藝術家。
很快,我就意識到我沒有"創作衝動",即使看過很多別人的創作,我也常常不清楚自己想要創作的東西。
因此,未來的 AI 即使具備無比強大的繪畫和編曲能力,還是隻有少數人能成為畫家和音樂家。程式設計師也是如此,即使 AI 會程式設計,也無法人人成為程式設計師。
-- 《Cursor 深度體驗》
往年回顧
沒有目的地,向前走(2023 #283)
生活就像一個魚缸(2022 #233)
騰訊的員工退休福利(2021 #183)
貴州變瑞士,有沒有可能?(2020 #133)
(完)