---
title: "從 ChatGPT 看學習與對工程師的影響"
date: 2022-12-09T00:00:00+08:00
publishDate: 2022-12-09T00:00:00Z
lastmod: 2022-12-05T11:07:57+08:00
tags: ["工程師","經驗","AI","學習"]
toc: true
permalink: "https://blog.aotoki.me/posts/2022/12/09/the-chatgpt-and-learning-and-programmer/"
language: "zh-tw"
---


最近因為 OpenAI 的 [ChatGPT](https://openai.com/blog/chatgpt/) 推出，很多人開始嘗試，也得到了不少令人驚豔的結果。甚至有一些人開始開玩笑說「以後就讓 AI 寫程式吧！」之類的。不過，如果對這項技術有一定程度的了解，這個夢想也許還挺遙遠。

<!--more-->

## 優等生{#the-star-student}

不論是 ChatGPT 或者 GitHub 的 [Copilot](https://github.com/features/copilot) 這類 AI 工具，他們有點類似那種「什麼都能背起來的同學」的感覺，這是因為現今 AI 的技術是使用大量資料訓練而成，也因此才會有 [NovelAI](https://novelai.net/) 的插畫爭議，讓許多插畫家不希望自己的作品被當作「訓練資料」

如果要說的話，這類型 AI 應該是一個「抄襲（山寨）高手」的角色，他並不會單純的抄襲，而是會搜集大量的資料，並且根據這些資料進行「混合」讓你覺得他似乎在做一些原創的事情，但實際上只是把各種資訊混合在一起。

## 不知變通{#inflexible}

大家可能都會有「每個步驟分開都會，合起來就不會」這樣的經驗，以 ChatGPT 來說就有點類似這樣的狀態，如果我們問他一些關於可以靠「死背」的問題，像是某個歷史時間點發生的事件，那麼很有可能回答出來。然而如果是兩道數學題的「組合」如果沒有人討論過，那麼就無法回答。

這其實是很常見的問題，不論是我們在學習技術、知識的過程中都會遭遇到的狀況，因為我們只是單純的把「資訊」記起來，而沒有思考這些資訊的關聯以及實際的去應用這些知識，從中發現錯誤然後修正，最後轉換為「經驗」

如同[ChatGPT 會有錯誤與正確同時並存](https://www.inside.com.tw/article/29960-gary-marcus-openai-chatGPT)這篇文章所提到的狀況一樣，目前的 AI 也無法做到「查證」的處理，假設資料來源都是錯誤的，那麼就只會給予錯誤的資訊，這部分也跟區塊鏈的溯源難題一樣，源頭是假的那麼就都是假的。

> 印象中當聊天機器人開始流行時，微軟的機器人就因為被大量的仇恨言論教壞最後失控而停止服務，而這一直都是人類難以被取代的特性。

## 懷疑{#doubt}

最近在思考關於學習的文章時，剛好有個很好的例子。中文的「學問」其實是由「學習」跟「提問」兩個面向所構成，我們之所以能處理許多複雜的問題，正是因為對學習到的事物保持好奇、疑惑，那麼才能夠持續的進步。

然而，最近比較熱門的幾套 AI 工具都還停留在「學習」的階段，因此我認為有人說 ChatGPT 是一個「更強大的搜尋引擎」似乎是相當合理的。以一個擅長查資料的人來說，不外乎就是定義「關鍵字」去查詢然後「篩選」得到的資料，最後再去「理解」這些資訊，目前的 AI 大多還停留在「找出關鍵字」的階段，並沒辦法篩選跟理解。

這其實也是我們過往在學習經驗上的一個盲點，用「提問」學東西的速度是遠比「學習」還更快的，而要能夠提問需要先具備足夠的知識，因此是先「學」再「問」的過程。

> 以學校來說，如果老師要回答所有人的疑惑大概會完全沒有時間，另一方面我們的文化偏向於不去懷疑，因此經常沒有「疑惑」需要解答，最後就只是空有知識。

## 我該擔心嗎？{#should-i-worry-about-it}

如果你在工作上經常需要查 StackOverflow 找到一些程式碼片段回來修改，那麼你的程度可能只比 AI 還好一些，那麼你就需要擔心了！

作為軟體工程師，困難的地方在於如何區分出這些「相關」和「不相關」的程式碼片段，有效的組織起來進而構成可以維護的軟體，不論是 Domain-Driven Design 或者[我從 Clean Architecture 學到的依賴管理](https://blog.aotoki.me/posts/2022/11/18/learn-dependency-management-by-clean-architecture/)其實都是在討論這個問題，因此我們暫時不用擔心被取代。

另一方面，雖然文字創作和藝術創作者似乎看起來像是無法避免的會遭遇到問題，然而根據使用方式 AI 可能會是助力。現在的 AI 是沒有辦法「理解」內容的，也就是說不論是文字創作、藝術創作都只是用不同形式將「已知的資料」呈現出來，那麼這些資料其實就是很好的「參考」資訊。

這是因為 AI 在提取知識的時候不會有「思考框架」的限制，就如同 AI 棋手打破了許多以往已知的棋路一樣，因為 AI 從一開始就沒有意識到有任何規則的存在，那麼同樣在文字、藝術的創作上，就很容易提供各種「意想不到的組合」透過人類提取就會變成新的創意。

同樣的，Copilot 並不是用來加速「開發」的工具，至少我平常撰寫程式的速度都還是比 Copilot 快的，對於熟練的工程師來說等待運算的時間早就足以完成任務，但是 Copilot 能給我們的是各種「沒看過的用法」可能有好有壞，但我們可以省下「閱讀程式碼」的時間，透過 Copilot 找到可能更適合的寫法，這才是目前 AI 工具的價值。

> 我使用幾年的 SEO 工具，最近也提供了 AI Writer 的功能，做法就是透過關鍵字幫你提取出一些適合的文章段落，我們再根據這些符合目標的段落調整內容來完成寫作。

