人工智慧與自造體驗
課程總覽
教學軟體:scratch
教學網站:teachable mechine、Quick Draw、AutoDraw、codemonkey、blockly-games
課程規劃:
人工智慧/10
自造拳擊機/4
方塊迷宮/4
單元一:人工智慧
人工智慧(AI)是指由人工製造的機器所表現出來的智慧。
AI 科技或 AI 技術,則是指透過電腦程式來呈現人類智慧的技術。
AI 的核心問題包括建構能夠跟人類似甚至超卓的推理、知識、規劃、學習、交流、感知、移物、使用工具和操控機械的能力等,目前距離成功仍然非常遙遠。「弱人工智慧」已經有初步成果,甚至在一些影像辨識、語言分析、棋類遊戲等等單方面的能力達到了超越人類的水平,因此從事某些特定領域職業的人類已經漸漸被 AI 取代。想要開發出具備統合思考能力的「強人工智慧」,至今仍然只是夢想,還需要更多的研究。「超人工智慧」也就是機器的思考能力超越人類,人類將受到機器統治的假設,目前是「科幻」而非「科學」。
人工智慧體驗
請連結網址:https://storage.googleapis.com/tfjs-examples/webcam-transfer-learning/dist/index.html
用頭的移動或手勢來指揮小精靈玩遊戲!
請連結網址:https://teachablemachine.withgoogle.com/
機器的種類說明如下:
Image Project: 透過影像辨識學習
Audio Project: 透過聲音辨識學習
Pose Project: 透過姿勢辨識學習
請選擇「Image Project」,預設只能辨識兩種圖像,請新增一個「Class」,然後將三個 Class 分別命名為「剪刀」、「石頭」、「布」。
先訓練「剪刀」Class,在攝影機鏡頭前拍攝自己,右手舉起在臉的旁邊比出「剪刀」,移動手的位置讓攝影機能拍到。
接著訓練「石頭」、「布」,訓練完成後,點擊最右邊的「Preview」檢驗訓練成果。
請連結網址:https://quickdraw.withgoogle.com/
點擊「開始塗鴉!」按鈕
電腦出題後,可以先思考一下怎麼畫,然後再按「我知道了!」開始畫圖,畫圖過程中,AI 會一邊辨識你的畫,一邊說出它認為的答案,繼續畫直到電腦認為你已經成功為止。
請連結網址:https://www.autodraw.com/
點擊「Start Drawing」按鈕,程式會自動幫你點選左側選單中的「AutoDraw」工具
請開始畫圖,AI 會自動判斷你畫的是什麼,然後你可以從工具列點選圖形範本。
點選左側選單中的「Select」工具,縮放或旋轉圖形
點選「Fill」工具可以著色。
其它繪圖工具讓你自己手繪,沒有 AI 協助。
機器學習專案
請連結網址:https://machinelearningforkids.co.uk/
這個網站幫助你:
收集你想要辨識事物的各種範例,例如:數字、文字、圖片
使用範例來訓練 AI,讓 AI 可以辨識事物
將訓練好的 AI 應用到 Scratch 上設計互動遊戲
請連結網址:https://makeredu.github.io/OSEP/app/ 或 https://e.meps.tp.edu.tw/OSEP/
這個網站讓你透過 Scratch 擴展套件直接建立和應用 AI 模型。
什麼是鑑別式AI?
鑑別式 AI,顧名思義是指 AI 能夠幫我們辨別事物,預測該事物是屬於哪一個「類別」。比方說,提供很多貓和狗的照片給 AI 進行訓練,它就能學會區分貓和狗的特徵,然後當你給它一張新照片時,它能告訴你這是貓還是狗。
人工智慧之所以可以辨別不同的事物,是透過「大數據」以及「深度學習」訓練出來的,而不是根據程式對資料的剖析去進行預測,鑑別式 AI 在我們的生活中有大量的應用,包括:汽車導航、文件辨識、臉孔辨識、語音助理、停車場繳費系統......等等。
什麼是生成式 AI?
以上所介紹的人工智慧應用,主要目的是用來辨識和解決問題,也就是說人工智慧根據輸入進行「分類」,來決定要對應到哪一個答案。這種「鑑別式 AI」必須要由人類提供所有可能的答案讓電腦進行匹配,而無法「無中生有」。那麼人工智慧有辦法進行「創造性思考」嗎?為了嘗試解答這個問題,人類開始設計「生成式 AI」。
生成式 AI 主要使用兩種不同的 AI 模型,第一種模型是「用於理解文章」的「大型語言模型」,另一種模型是「用於生成多媒體內容」的「生成對抗網路」。
大型語言模型
如果人工智慧能夠理解人類所使用的語言,可以帶來哪些好處呢?是不是能讓人工智慧更理解人類的要求,從而提供更恰當的幫助呢?想想看,如果人工智慧可以幫我們上網查資料,甚至可以幫助我們寫作業,那就太棒了!
目前大型語言模型的主要發展方向是「對話系統」的開發,如 chatGPT 以及由 chatGPT 衍生出來的網路搜尋工具「Bing Copilot」,用於輔助程式碼寫作的「GitHub Copilot」...等。
要有效利用 chatGPT 這一類的工具,就必須知道如何使用「提示詞」,另外針對 chatGPT 的回應,也要抱持懷疑態度小心求證,因為 chatGPT 提供的答案並非完全正確,chatGPT 也有可能提供帶有偏見的意見或捏造的事件,這些都是同學在使用 chatGPT 需要多加注意的地方。
生成對抗網路
「生成對抗網路」的構想來自偽畫鑑定,有兩個重要組件:生成器和判別器。
生成器
就像是一位畫家,它的任務是模仿別人的風格進行新的創作。它必須學習很多不同的繪畫技巧和創作風格,然後用這些知識來創作。不過,一開始生成器可能模仿的不太像,需要不斷的學習和改進。
判別器
像是一位鑑定專家,它的工作是判斷一幅畫作是否為真跡。判別器會試著檢查生成器創作的內容,找出其中的破綻和瑕疵,如果有找到就證明作品是假的。一開始,判別器可能很聰明,能輕易分辨出生成器的作品。但是生成器也很聰明,它會不斷學習,改進自己的技巧,使得創作越來越接近真實的樣子。
這就像一場有趣的遊戲,生成器和判別器互相競爭和學習。生成器試圖創作更逼真的內容,而判別器試圖變得越來越聰明,能更準確地辨別真假。隨著時間的推移,生成器逐漸變得更加擅長創作,而判別器也變得更難以分辨真假。生成式 AI 可以應用在很多有趣的領域。比如,它可以幫助藝術家創作出美麗的圖片,設計師製作獨特的模型,甚至幫助科學家研究和解決問題。
問題:這是一張AI生成的照片,請同學體驗一下,擔任判別器的角色,說說這張圖的問題在哪裡?
chatGPT 作詞,Suno AI 作曲、演唱,Midjourney 插圖,Runway 動畫
延伸思考一些生成範例:
以上是由老師使用AI製作出的影片,影片中的人不懂日文,卻能生成日文演講的影片,你可以嘗試在影片中找到不自然的地方嗎?此製作軟體為heygen
不懂舞蹈的人,三張照片可以生成出跳舞的影片,因為生成式AI,不懂畫畫的人也可以畫出心中的圖案;不懂作曲的人,也可以編出想作的曲
子,這樣對社會會有什麼樣的影響?
生成式 AI 有哪些應用?
生成式 AI 的應用主要可以分為以下幾個領域:
語言生成:透過「大型語言模型」生成自然語言文本,一開始用於 Google 翻譯、摘錄和撰寫新聞稿,目前則用於設計聊天機器人(chatGPT、Copilot、Gemini、Claude)、筆記摘要(Notion AI)、簡報製作(Gamma)......等。其中最著名的大型語言模型是 GPT(Generative Pre-trained Transformer)系列,Google 翻譯使用的模型是 GPT-2,而有名的 chatGPT,則是使用 GPT-3.5 和 GPT-4 模型。
影像生成:透過「生成對抗網路」生成逼真的圖像,如圖像修復、圖像創作、圖像風格轉換......等。目前最流行的應用則是「用文字生成圖像」,這會需要「大型語言模型」和「生成對抗網路」兩種人工智慧模型的合作。常見圖片創作的 AI,包含:Midjourney、Stable Diffusion、Leonardo、PlaygroundAI、Adobe Firefly...等。
聲音生成:同樣透過「生成對抗網路」也能夠生成音樂作品,如語音合成、自動配音、樂器合成、自動伴奏、樂曲創作......等。常見聲音生成 AI 平台,包含:演說(FlexClip、Speechify)、流行歌曲(Suno AI)、音樂(AIVA、Riffusion)...等。
影片生成:其實是「影像生成」和「聲音生成」的進階應用,用來生成逼真的影片內容,例如:Sora、Runway、heygen...等。這一類的 AI 可以應用於卡通繪本製作、將圖片改成動畫、影片製作、影片造假......等,使用 AI 進行影片或聲音造假的技術被稱為「DeepFake」。
生成式 AI 體驗
1.ChatGPT 與 Bing AI
2. AI 換臉 Faceswapper https://faceswapper.ai/
也可以試試反向操作
3. AI繪圖體驗:PlaygroundAI 網址:https://playgroundai.com/
PlaygroundAI正在建立一個圖像編輯器,它將人工智慧研究和產品設計結合起來,使人們能夠像專業人士一樣創建圖形,而無需成為專業人士。
Firefly AI 網址:https://firefly.adobe.com/
Firefly 教學影片
單元一作業:
作業一、夢想中的教室。
作業說明:請使用生成式AI繪圖的功能,繪製出一張你夢想中的教室吧。
加分作業、無人的台北街頭。(可以使用PlaygroundAI)
作業說明:請使用這張cc0圖片,使用生成式AI繪圖讓台北街頭上的路人及車輛消失,營造出無人台北美景。
下載上方的照片,參考右邊教學範例,將街道中的人車從照片中消失,完成作業。
單元二:自造拳擊機
認識單晶片控制器
是把中央處理器、儲存器(記憶體)、定時/計數器(timer/counter)、各種輸入輸出介面等都整合在一塊積體電路晶片上的微型計算機。與應用在個人電腦中的通用型微處理器相比,它更強調自供應(不用外接硬體)和節約成本。它的最大優點是體積小,可放在儀表板內部,但儲存量小,輸入輸出介面簡單,功能較低。
目前比較流行的單晶片控制器有:micro:bit、Arduino、Respberry Pi。
單晶片控制器很適合用來開發解決實際生活問題的設備或機器,所以引進到 108 課綱之中作為生活科技領域的教具。
Micro:bit 單晶片硬體單元簡介
MakeCode 開發介面介紹
Micro:bit 感測器原理(使用英語解說) https://www.youtube.com/playlist?list=PLMMBk9hE-SeqDYtw9pGNPsQ10V_EGMyGe
認識micro:bit
功能介紹
https://microbit.org/zh-tw/get-started/features/overview/
micro:bit 自學教材 https://mymell20031.gitbooks.io/micro-bit/
micro:bit 編輯器 https://makecode.microbit.org/
溫度感測器
「輸入」中有許多感測功能可供選擇
「基本」中有顯示功能
計步器
步驟一:
變數:新增變數「步數」
輸入:晃動
當姿勢晃動時,步數加1
步驟二:
輸入:當按鈕B按下時,顯示「步數」
輸入:當按鈕A按下時,清空「步數」
抽籤機
更精簡的抽籤機?
拳擊機實作練習
步驟一:
輸入-更多:將加速度範圍設為8G,以便增加感測的範圍。
科學小常識
引力或重力(gravitation/gravity)是造成所有具「質量」或「能量」的物質之間相互吸引的作用,屬一種基本交互作用;是地面上所有物體重量的來源。透過測量重力加速度,也可以推估該物體的質量,在這個單元裡,我們用這個方法來推估出拳的重量。
地球的引力也就是重力加速度,經過實際測量為 9.8公尺/每秒平方。我們把這一個數值當成標準,稱它為 1G。太陽的質量比地球大,約為 27.94G。月球的質量則比地球小,大約是 0.166G,約為地球的 1/6。也就是一個體重為 54 公斤的成年人,登陸月球後會只剩下 9 公斤,如果他在地球上可以跳高 1 公尺,在月球上則可以跳高 6 公尺,約為兩層樓高度,意思是他可以直接從地面跳到 3 樓。
加速度感測器如果設為 1G,可以感測 -9.8 ~ 9.8 公尺/每秒平方範圍的數值(負值代表減速),如果設為 8G,則可以感測 -78.4 ~ 78.4公尺/每秒平方範圍的數值。通常揮拳的動作速度會快於物體掉落的速度,所以測量揮拳速度建議使用 8G 的範圍(強度數值為 0 ~ 14400)。
步驟二:
輸入:晃動時比較變數與加速度強度,只記錄最高強渡!
基本(輸出):重複顯示加速度「a」
步驟三:
輸入:當同時按下 A 和 B 按鈕時,將變數「a」歸零。
共同討論:
大家得到的最高分是幾分呢?能不能讓大家的分數更直觀更容易比較呢?
1.改成滿分10分或100分。
2.改以LED燈號顯示。
3.利用程式直接判斷贏家。
如右圖,這樣的燈號所代表的加速度感測值又是多少呢?(假設最大值為14400)
參考答案
將最大值 14400 分配給 25 個 LED 燈,14400 除以 25 為 576,每當數值滿 576 就會多亮一個燈,圖片上總共亮了 10 個燈,換算成數值為 5760。
另一個算法:亮的 LED 燈為全部的五分之二,將 14400 乘以 2/5 = 5760。
測量出此數值表示剛剛拳擊的加速度位於 5760 ~ 6335 之間。因為到達 6336 時會多亮一顆 LED 燈。
補充教材:廣播遊戲
遊戲規則說明:
1.老師在遊戲開始前「私下」指派任務
ex:第一位同學傳送數字「3」,第二位同學將收到的數字「加1後傳出」,第三位同學將收到的數字「減2後傳出」,第三位同學將收到的數字「加3後傳出」,第一位同學收到答案後舉手訴老師答案(3+1−2+3=5)。
2.老師等待三組正確答案出現後,以小組平均傳訊速度計算名次。
共同討論:
每天放學時,總導護老師報告時,怎麼讓全校同學聽到老師想傳達的事項?
廣播
老師在廣播的時候,隔壁的建中會收到嗎?為什麼?
廣播頻率不同
我們的遊戲應該怎麼設計使用群組呢?
步驟一:
廣播-將廣播群組設為「 」群組(請搶答)
變數-新增變數ans並將初始值設為0
步驟二:
輸入:當按鈕A按下時,ans值加1
步驟三:
輸入:當按鈕A+B按下時,清除ans值
步驟四:
輸入:當按鈕B按下時,發送ans值
廣播:切換為「 」群組,傳送ans值。發送後切換回「 」群組
基本:顯示發送成功,並清空畫面
步驟五:
廣播:收到訊息時,顯示ans值
單元三:方塊迷宮
這個單元將教小朋友設計一個簡單的平台遊戲,如右圖。遊戲中的迷宮可以無限擴充,會使用多個舞台場景串接在一起,由於遊戲使用「碰到白色」積木來偵測關卡,所以請將舞台背景設置為白色以外的顏色。迷宮所需要的圖形,請直接下載「迷宮素材」,使用「角色上傳」匯入到自己的作品中。
設計第一個關卡
步驟一
新增「關卡」角色,請從匯入的「迷宮素材」角色,圈選複製要使用的素材,然後貼到自己的迷宮裡。請將第一個造型改名為「關卡1」,我們將利用造型名稱來載入相鄰的關卡,所以之後的關卡將命名為「關卡2」、「關卡3」....依此類推。
繪製玩家角色
步驟二
新增「玩家」角色,請繪製一個方塊,加上可愛的表情,大小為 32 X 32。
變數與初始化
步驟三
點擊「玩家」角色,並建立五個私有變數:步數、移動方向、速度X、速度Y、跳躍。這些變數是用來控制「玩家」角色使用,請設定為「僅適用當前角色」。
建立全域變數「關卡」,並將「關卡」初始值設定為 1,「廣播訊息佈置關卡」是預留用來切換關卡的,暫時沒有作用。
繼續設定變數初始值以及「玩家」一開始的位置,將玩家顯示出來後,進入遊戲的主迴圈(重複無限次)。
函式積木
在 Scratch 中有三種程式積木可以使用,分別是:預設積木、擴展積木、函式積木。
預設積木:也就是 Scratch 所提供的基本積木,依照功能分為:動作、外觀、音效、事件、控制、偵測、運算、變數等 8 類,並以不同顏色區分以方便閱讀和尋找。
擴展積木:Scratch 可以透過擴展套件來取得新積木,將在六年級上學期「聲控遊戲」單元中介紹。
函式積木:Scratch 允許設計者可以自行創建函式積木,讓部分程式可以反覆利用,一方面可以讓程式更容易閱讀和理解,另一方面可以提昇程式寫作的效率。本單元我們將嘗試創建函式積木並利用函式積木完成幾何圖形的創作。
函式積木的執行方式
建立函式積木時,如果將「執行完畢再更新畫面」打勾,則函式積木中的所有程式都會在背景執行,執行過程將看不到,但可以提高執行效能。
不打勾則積木會在前景執行,可以從舞台觀察到執行的過程,但其他程式必須等待函式積木執行完畢,因此會有畫面延遲(lag)的現象。
通常在程式需執行大量運算時(例如:設計互動遊戲),會讓積木在背景執行。在本單元中,你可以試試看兩種執行方式有何不同,特別是在「畫圓」的時候,請好好體驗前景與背景執行的速度差異。
鍵盤控制與重力模擬
步驟四
建立「鍵盤控制」函式積木,並勾選「執行完畢再更新會面」。這個函式積木將根據鍵盤按鍵情形,模擬重力的影響,以計算出恰當的水平和垂直移動速度。
將「移動方向」設為「向右鍵被按下」減去「向左鍵被按下」,當按下「向右鍵」時,為1 - 0 = 1,按下「向左鍵」時,為0 - 1 = -1,其他狀況為 0 - 0 = 0 或 1 - 1 = 0,也就是說變數「移動方向」有 1(向右)、0(不動)、-1(向左) 三種狀態。
變數「跳躍」用來記錄是否為跳躍狀態,還在「跳躍」中時如果按下「向上鍵」將不接受再次跳躍(不接受三段跳)。跳躍時,先設定跳躍的初速度為 15,可以自行調整。
根據「移動方向」決定「速度X」,向右移動為正數,向左移動為負數。當玩家跳躍起來時,左右移動的速度跟在地面上移動相比,減緩速度會比較快,這樣比較符合真實的物理環境。將「速度Y」持續減 1,這是為了模擬重力的作用,越接近最高點速度越慢,落下時則會逐漸加速。
玩家移動細階化
步驟五
首先計算總移動距離:因為「速度X」和「速度Y」都包含正數和負數,為了避免彼此抵銷,所以先取「絕對值」,所謂「絕對值」是指去除正負號之後留下來的數字。將左右上下移動的距離加總後,儲存於變數「步數」中。
細階化:不要讓玩家一次移動到目標位置,因為有可能會在移動過程中被障礙物阻擋,因此一次僅移動一點點距離,檢查是否被阻擋,逐次累積最後才到達目的地。這種方法稱為「細階化」,是程式設計很重要的一個觀念。
利用剛剛計算出來的「步數」進行細階化,每次只移動「速度X/Y」除以「步數」的距離,檢查是否撞到障礙物(白色外框),若是則回到原來的位置,並將「速度X/Y」設為 0 停止移動。
如果玩家正在垂直移動(跳躍),可以把整段過程區分為「上升期」和「下降期」,如果是下降期遇到障礙物,就表示玩家已經落地,必須把變數「跳躍」設為 0,才能讓下一次的跳躍操作(向上鍵)生效。
遊戲結束判斷與結束動畫
步驟六
仔細觀察關卡中用到的尖刺,外框是「淺黃色」而不是白色,當玩家碰到「淺黃色」遊戲就結束了。
遊戲結束動畫,簡單的將玩家慢慢變透明就可以了。
關卡銜接
步驟七
當玩家移動到舞台邊緣時,就要準備銜接下一關迷宮,我們可以簡單地透過檢查「X座標」進行接關的判斷,接關後也透過「X座標」的設定移動到正確的關卡位置。
向右接關時,將變數「關卡」加 1,現在是關卡 1,加 1 變成關卡 2。向左接關時,則減去 1,回到原來的關卡。
「廣播訊息佈置關卡」積木再度出現,稍後在介紹「關卡」角色時,才會詳細討論。
將所有的程式組合進遊戲的主迴圈中,如最右圖。
設計更多關卡
步驟八
設計更多的關卡,並依照順序為造型命名。
「當收到訊息佈置關卡」時,切換造型到字串「關卡」加上數字,例如:1、2...等,剛好湊出「關卡1」、「關卡2」...這樣的字串。
試玩自己的遊戲,然後調整關卡,讓難易度適中,遊戲才會更好玩。