2023年6月3日 星期六

ChatGPT: 正確與錯誤的使用示範

使用 ChatGPT 之前需要有的兩個最基本觀念: (1) 它被賦予的任務是產生文字, 而不是陳述事實。 (2) 相對於整個網際網路查得到的資訊, 它的知識是滄海一粟。

如果你稍微了解 jpg vs png兩種檔案格式的差異 (讀分隔線之前的段落就夠了), 那麼我強力推薦這篇文章, 它對於理解 ChatGPT 有極大的幫助: ChatGPT Is a Blurry JPEG of the Web。 如果用 「一張解析度超級高的 png 圖檔」 來比喻整個網際網路上所有的資料, 那麼 ChatGPT 就是一個低解析度、 而且又再丟棄了很多資訊的 jpg 圖檔。 你如果太認真地要問圖上某個 pixel 是什麼顏色, 它會給你一個聽起來有模有樣的答案, 但是請別以為這就是事實。 這個也比喻也很有助於理解它 「採用 X 的風格/語調去描述 Y 事件」 的搞笑神奇能力, 例如 「用美國獨立宣言的風格描述在烘衣機裡掉了一隻襪子」。 最後作者的結論是: 既然它只是整個網際網路的 (一個掉了大量資訊的) 壓縮版本, 那麼當你還有完整的網際網路可以用的時候, 這張壓縮圖檔還有多少用處呢? 這並不是說它沒用, 而是要提醒讀者: 該學會判斷何時它比完整的圖檔有用。

一、 幫助搜尋不是取代搜尋

丟掉你對它不切實際的幻想, 才更能夠看到它真正有用的地方。 當我要 找資訊 的時候, 當然是求助於 google 搜尋引擎, 而不是求助於 ChatGPT。 搜尋引擎會精確地找到整張大圖片 (整個網際網路上面) 未壓縮的幾小片最切題的原始截圖 (最切題的幾篇文章), 特別是最近幾個月才出現的、 還沒有被拿去訓練它的文章, 只有靠搜尋引擎才找得到。

偶爾我會遇到想不出, 或者是完全不知道關鍵詞的狀況。 例如我想要知道某個瑜伽姿勢的正確做法, 我會先對它描述那個動作, 再用它所提供的關鍵詞來 google:
One stands on one leg. One hand holds the foot of the other leg, which bends backward and tries to extend. The other hand extends forward. What's the name of this yoga pose?

又例如我在 整理一張試算表 的時候, 想要把很多個 「名稱看起來像是某種分類」 的欄位合併成一個欄位, 於是我會問它:
A csv file contains many related numerical columns. For example, "energy mix" from "our world in data" has one column for each type of energy source. I want to combine all those numerical columns into a single numerical column, and add a new categorical column whose values are the headers of the original csv file, creating a much narrower (fewer columns) and higher (more rows) new table containing exactly same information. Is there a name for such an operation? What open source projects are available for such an operation?
從而得知這個動作的名稱叫做 "melting" 或 "unpivoting"。 於是就可以用這個關鍵詞去 google 更精確的資訊。

有時我的問題要採用的是好幾個很 "通用" 的詞, 但是 google 很容易誤會成別的排列組合, 加介系詞釐清關鍵詞之間的關係也沒用, 因為 google 好像會省略介系詞。 例如我想找 「專門用來備份臉書」 的自由軟體, 可是用 "open source archive facebook" 找到的, 要嘛就是舊的 (archived) 臉書相關自由軟體, 要嘛就是臉書自己建的一些自由軟體專案, 因為這幾個關鍵詞太普通了, 很容易產生各種不同意思的排列組合。 這時只好問 ChatGPT:
What are some open source projects for archiving facebook posts?

如同 blurry 一文作者所解釋的, 身為一個文字部落客, 我完全沒有興趣叫 ChatGPT 幫我產生文字。 我花力氣叫它幫我寫文章, 不如我自己寫比較快。 我會想要寫一篇文章, 就是因為我在網路上查不太到我想說的觀點 (如果查到了, 我把超連結提供給社群媒體上的朋友就好了, 何必辛苦自己寫?) 它當然無法幫我寫。 但是我不時會對它描述我想表達的概念, 請它幫我尋找合適的形容詞/名詞/動詞:
What phrases can be used to describe the act of persuading, with some form of coercion, people?

或是約略記得一句名言, 但用字不精準而且忘記是誰說的, 這時也很適合向它查詢精確的文字與出處。

二、 不要問 「沒有通則的細節」、 不要叫它數數兒

前面已經說過了, 問它細節, 就像是在問模糊的 jpg 檔裡面某個 pixel 的顏色一樣, 你八成會得到一個 「看起來有模有樣, 但實際上不存在或不正確」 的答案。 就算你要求它提供原文出處作為佐證, 它也可以隨便掰一篇不存在的文章滿足你的幻想。 例如: 法學教授無端被 chatGPT 指控性騷擾學生 ChatGPT 幫律師寫訴狀, 掰出 6 個不存在的判例 等等, 這些都是知名的例子。 這與先前要求提供 「名言的出處」 不同。 既然是名言, 說那句話的名人的名字就應該會在很多網頁出現過, 所以 ChatGPT 很可能會給正確答案。

所謂沒有通則的細節, 比如我問它 「洪朝貴是誰」, 它當然不知道。 (我很知趣地從來就沒想要問這個問題。 直到寫這篇文章的時候, 才配合主題問一個我早已知道答案的問題。) 有趣的是, 當我問它 「鄭道明是誰」 (敝校校長) 它回答: 是一位中國的知名演員... 這再次提醒我們: ChatGPT 的養成, 是透過閱讀大量的文章。 網路上關於中國某位知名演員的文章, 當然會遠多於關於台灣某位校長的文章。 事實上整體而言, 簡體中文的文章當然遠多於正體中文, 我猜因為這樣, 所以用中文跟 ChatGPT 聊天時, 它會一直自動滑到簡體中文輸出。 然而, 即使我問台灣的鄭道明是誰, 它也答不出來。 這是沒有通則的細節。 問 google 很容易得到有用的答案, 而且因為你的 IP, 直接就給你台灣的資訊。

即使是學校整體、 不隨時間而變的問題, 對它來講還是算細節:
List the first few established departments of Chaoyang University of Technology, formerly Chaoyang Institute of Technology.
想要知道這種問題的答案, 不如去問維基百科或查詢校史。

即使是列舉縣市的問題, 對它來講還是算細節:
Which counties and cities of Taiwan does the Tropic of Cancer pass?
用中文問也並沒有得到正確的答案。 再一次地, 從 google 圖片搜尋更容易找到正確答案。 下次當你對它的回答感到失望時, 不妨想想我精心設計的這個例子。 你問的特定人事物, 比北回歸線更有名嗎? 比台灣的縣市名稱更有名嗎? 那你怎麼還能期待 ChatGPT 給出正確的答案呢?

本來它的數學很弱, 後來被調教過了, 可以算很冗長的數字。 但是叫它 "數" 有幾位數, 還是會數錯:
How many digits are there in 30! (30 factorial)

問它前一題的答案有幾個英文字, 也是胡亂回答:
How many English words are there in your previous answer?

或者是問它台股市場上有多少檔股票, 得到的答案也跟真實答案差很多:
How many stocks are available in Taiwan's stock market, including those in the OTC market?

ChatGPT 不會思考, 它甚至並不 "理解" 任何東西。 希望上面這些錯誤示範的問題可以幫助你看清這一點。

三、 用數學理解 ChatGPT 如何唬爛

如果你的高中數學程度不錯, 以下幾個看起來幾乎相同, 但得到的回答卻大不相同的問題, 可以讓你更理解 ChatGPT 的唬爛何時會成功, 何時會失敗:

  1. "Compute sin(pi/6)" => 它 "喜歡" 解說, 不只提供正確的答案, 也會提正確的供計算過程。
  2. "Compute sin(pi/12)" => 有時正確有時給一個看起來有點樣子的鬼扯證明, 就是「聰明調皮不唸書很會鬼扯的學生會寫得出來、 老師趕時間時不小心也會被騙」 的那種答案,
  3. "Compute sin(pi/5)" 或 "Compute sin(pi/17)" 可能還需要加註: "as expressed in terms of sums, products, and finite root extractions of simple numbers" => 唬爛瞎掰一串證明, 有時甚至還會說 「答案是複數」, 最後卻還是給一個正確的實數數值答案。 (正解)

重點還是回到: 它到底閱讀了多少相同問題的文章? 因為網路上有很多文章解說如何計算 sin(pi/6), 也有少數文章解說如何計算 sin(pi/12), 但是解說另外兩題的文章極少, 所以它就答不出來了; 但是還是會很努力地鬼扯, 因為它被賦予的任務是 chat, 聊天, 產生文字, 而不是提供事實。

現在你知道了吧? 如果連數學問題它都會很努力地瞎掰, 那你還有什麼理由全盤接受它對其他問題的答案呢?

四、 結語

如果你對文字解說比對數學更有感覺, 可以試試閱讀這篇文章 What Kind of Mind Does ChatGPT Have? 前面三分之二用白話的方式解釋它的運作原理。 或者你也可以直接跳到後面, 從 "confidence" 那一節開始讀他的結論。 作者 Cal Newport 是電腦教授。 他用幾個實例說明: ChatGPT does not create. It imitates. 又或者可以直接看同一位作者的 另一篇只簡單講結論的短文

我從實用的角度給讀者們的建議呢? 要學會用正確的方式駕馭它, 因為能不能善用它, 將大大影響著你的生產力, 就像先前的搜尋引擎一樣。 但不需要害怕它, 更不要崇拜它, 就像你不該害怕、 崇拜 google, 或誤認為 google 的結果就是真理一樣, 對吧?

對了, 用 "thoughts on chatgpt" 去 google, 可以讀到更多談論它的文章。 這個簡單的 "搜尋" 動作, 可以帶給你許多 ChatGPT 本身無法告訴你的觀點。

9 則留言:

  1. bing 跟 andi 都比 chatGPT優秀,GOOGLE為了賺錢,搜尋結果越來越爛
    簡單的陌生名詞,迅速有個概念,bing 跟 andi 都比 GOOGLE方便多了

    回覆刪除
    回覆
    1. 我還是第一次知道 andi ,謝謝介紹

      刪除
  2. ChatGPT is not the gospel
    ChatGPT is not always correct.

    I don't know about ChatGPT 4 but 3.5 doesn't always give you the correct or optimal answer.

    Maybe it's because it doesn't have access to the internet or that I didn't prompt it correctly.

    So with that in mind, I always make sure to validate ChatGPT's answer.

    The way I use ChatGPT is more of a compass than the final destination.

    It gives me direction to do some more research by myself.

    ChatGPT in other fields is surprisingly useful
    I found ChatGPT a lot more useful in fields other than tech.

    I asked it all sorts of questions from fields such as:

    Fitness – workout planner and meal plans.
    Relationships – Date night ideas, present ideas, poems, etc...
    Business – Getting ideas, validating them, and
    Writing – Ideas, outlines, and rewrites.

    以上是由教授提供的key words - "Thoughts on ChatGPT" 用google 搜尋出來的文章
    https://tamerlan.dev/chatgpt-best-practices-for-developrs/ 中的兩個片段
    而我問chatgpt 的一個數學問題
    1+2^2+3^3+... +n^n , n 為自然數 給予一個公式解(formula) , chatgpt 的回覆為
    实际上,表达式 1 + 2^2 + 3^3 + ... + n^n 没有一个已知的封闭型式解。这是因为每个项都涉及到指数运算,这种类型的级数很难找到一个简单的公式来表示。虽然我们可以将其中的每个项表示为幂运算,但是这样的级数在整数范围内会快速增长,没有一个通用的封闭型式解来表达整个级数。

    如果您需要计算特定值 n 的表达式的结果,您可以使用数值方法或算法来近似计算级数的和。然而,目前还没有一个简洁的公式能够适用于所有自然数 n。
    而我用google 以1 + 2^2 + 3^3 + ... + n^n 來搜第一條的結果就出現最佳解答
    https://www.quora.com/What-is-the-sum-of-1-1+2-2+3-3+-cdots+n-n
    這個網站是一個知名的問答網站, chatgpt 的GPT-3 卻無法找出來

    回覆刪除
    回覆
    1. 附加一句這個數學問題 在 1945 年AMM 提出的 無公式解, 距今也有近80年;理論上來說這個結論應該在網路上很容易找出來,但是chatgpt , andi 都是給的答案沒有比google 有參考價值

      刪除
    2. https://www.jstor.org/stable/2306261?seq=1#page_scan_tab_contents
      這個是它的證明

      刪除
  3. 相同的問題問andi 也是回覆沒有比google更有參考價值, 再第2次問時找了半天還沒回 無論是chatgpt, andi 只能談上為搜尋引擎, 智能性不高, 還是要靠搜尋人本身的知識為主加以分析

    回覆刪除
  4. 我再問chatgpt 一個應該目前比較熱門的話題,
    黃仁勳是誰
    他的回答如下:
    很抱歉,根据我所了解的知识库(截至2021年),我没有关于黄仁勋(Huang Renxun)的具体信息。黄仁勋可能是一个具有特定背景或特定领域的个人,但我无法提供详细信息。如果黄仁勋是一个公众人物或有其他特定背景,请提供更多的上下文,以便我能够更准确地回答您的问题。
    >>>閒聊的能力也是不怎麼樣

    回覆刪除
  5. https://heypi.com/talk
    可以試試看這個AI;-)

    回覆刪除
  6. https://youtu.be/Tyz6SBiJDgo

    AI 專家楊立昆 對 LLM 的看法

    回覆刪除

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。