<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[知勢 - 提供AI新知與觀點的媒體]]></title><description><![CDATA[「知勢」是由財團法人人工智慧科技基金會所成立的科技媒體，為讀者提供具影響力且可信賴的科技知識與趨勢。集結台灣各領域專家，包括人工智慧、資料科學、AIoT、5G等前端科技學者與研究者，以及來自業界的應用實例與觀點，幫助讀者瞭解最新技術及其應用，對經濟、社會和政治的真實影響。]]></description><link>https://staging.edge.aif.tw/</link><image><url>https://staging.edge.aif.tw/favicon.png</url><title>知勢 - 提供AI新知與觀點的媒體</title><link>https://staging.edge.aif.tw/</link></image><generator>Ghost 3.41</generator><lastBuildDate>Thu, 23 Apr 2026 11:44:04 GMT</lastBuildDate><atom:link href="https://staging.edge.aif.tw/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[組織架構圖畫好了，但是組織改組為什麼經常招致失敗？]]></title><description><![CDATA[我們生活在一個「組織」無所不在的世界。從在醫院出生、進入學校受教育、出社會工作，到在殯儀館舉行葬禮，在這段人生旅程中，我們與各種型態的組織息息相關。然而對於組織，我們真正了解多少？又該從何了解？]]></description><link>https://staging.edge.aif.tw/book-henry-mintzberg-understanding-organizations/</link><guid isPermaLink="false">6500350103e86b00010f4843</guid><category><![CDATA[精選書單]]></category><category><![CDATA[觀點]]></category><dc:creator><![CDATA[ AIF Editor]]></dc:creator><pubDate>Sat, 09 Sep 2023 14:17:17 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/09/--.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: html--><img src="https://staging.edge.aif.tw/content/images/2023/09/--.jpg" alt="組織架構圖畫好了，但是組織改組為什麼經常招致失敗？"><p>我們總希望找到一個能幫助企業創造優異績效的組織範本，但是，事實上並沒有完美的組織架構，只有適合的組織架構，唯有深度了解各種組織類型的適用情境，以及成員扮演的角色與發揮的作用，才能找出最理想的組織架構，也才能創造出真正有競爭力的<span class="aiSearch">高效團隊</span>！</p><!--kg-card-end: html--><h3 id="-">「高層」究竟是高在哪裡？</h3><p>我們往往相當隨意的使用「高階管理層」（top management）一詞。然而所謂「高層」究竟是高在哪裡？可能是指位居組織圖的頂端、薪資最高級別，甚至是位在總部大樓的最高樓層。然而站上組織的最高層，是否就能讓高階主管真正掌握組織的實際運作？那可未必，他們不一定能看到組織中其他人所看到的事物。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://staging.edge.aif.tw/content/images/2023/09/---2023-09-09---10.12.32.png" class="kg-image" alt="組織架構圖畫好了，但是組織改組為什麼經常招致失敗？" srcset="https://staging.edge.aif.tw/content/images/size/w600/2023/09/---2023-09-09---10.12.32.png 600w, https://staging.edge.aif.tw/content/images/size/w1000/2023/09/---2023-09-09---10.12.32.png 1000w, https://staging.edge.aif.tw/content/images/size/w1600/2023/09/---2023-09-09---10.12.32.png 1600w, https://staging.edge.aif.tw/content/images/2023/09/---2023-09-09---10.12.32.png 1688w" sizes="(min-width: 720px) 720px"><figcaption>圖2-2　組織改組</figcaption></figure><p>高階管理層之下是「中階管理層」（middle management）。顧名思義是位於組織圖的中層，但他們是否確實扮演著組織運作的中介角色？有的中階經理人只是負責將訊息向上層及下層傳遞，有些中階經理人則能夠將現場行動與高層辦公室中的抽象想法連結起來。這樣說來，我們或許該稱他們為「聯繫經理人」（connecting managers）會更加貼切。</p><p>那麼，「低階管理層」（bottom management）呢？你聽過這個名詞嗎？既然有高階和中階經理人，那麼位於組織圖底層的自然應該是低階經理人吧。雖然可能沒有組織會使用這樣的稱呼，但其實每一個底層經理人都很清楚自己在組織圖上的位置，以及在組織中的地位。</p><p>如果你想在你的組織中矯正這些扭曲的現象，那麼，我提供給你的建議是：除非你已經準備好使用「低階管理層」的稱呼，否則請禁用「高階管理層」一詞。</p><p><strong>又一次的組織改組（reorganization）降臨了</strong>。那些在組織圖上被移來移去的經理人肯定看得出差異，像是換了一個新頭銜，多半會有一個新「上司」，以及一些新「下屬」。（瞧，多糟糕的用詞！）關於組織，在這些頭銜以及發號施令的權力之外，一定還有更加重要的東西。如果西方諺語「眼見為憑」這句話是真的，那麼我們理應採取嶄新不同的方式重新看待組織。</p><p><strong>組織改組之所以如此受歡迎，是因為它非常容易</strong>。你只要坐在一台有著大大的「刪除」鍵的電腦前，甚至只需要一張紙、一支筆（最好是鉛筆，配上一塊好用的橡皮擦），然後把會計部門移到這裡、行銷部門移到那裡，或是讓崔維斯擔任運輸部長、達芙妮轉調國防部之類的。總之，他們全都被調動了……但也全都感到傻眼與困惑；如同這段文字所形容的：「我們訓練得很辛苦，但似乎每當我們的團隊開始成形時，就會被改組。後來我終於明白，改組的目的在於因應各種新狀況。這真是一種創造進步假象的美妙方法，同時可以製造混亂、降遞效率和打擊士氣。」順帶一提，這段話的出處通常被視為是由西元前二五○年古羅馬時代的海軍軍官佩托尼奧斯．阿爾比特（Petronius Arbiter）所言，但實際上這段話應該是發表自一九四八年左右。</p><p>讓我們試著想像一下，以另一種方式進行組織改組：調動員工座位。這種改組方式或許得花更多工夫（至少對設計者而言確實如此），卻可以減少其他人所耗費的力氣。於是突然間，工程部的伊妮德發現自己的座位被換到行銷部的麥克斯隔壁，於是他們不再像過去那樣相互抱怨與指責，而是開始相互交談（至少他們可以在上司看不到的咖啡機旁交談）。這才是真的改組啊！</p><!--kg-card-begin: html--><p>本文節錄自<a href="https://bookzone.cwgv.com.tw/book/BCB806" target="_blank">《明茲伯格談高效團隊：7種發揮競爭力的組織設計》</a>，由天下文化授權轉載。</p><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[AI如何辨認螢幕前的人是不是真人？活體辨識技術的發展與挑戰]]></title><description><![CDATA[拜網際網路被發明、電子元件以及行動裝置的革新所賜，數位化已改變生活中的一切，過去需要親臨現場才能辦理的業務，如今大多能在線上完成。在看不到真人的情況下，尤其近幾年身份偽冒詐欺事件頻傳，如何確認遠端連線對象的身分成了企業的一大難題。目前在身份識別上多以生物辨識來實現，其中的關鍵之一就是活體辨識。]]></description><link>https://staging.edge.aif.tw/aicafe-0726-liveness-detection/</link><guid isPermaLink="false">6500350103e86b00010f4844</guid><category><![CDATA[實作解析]]></category><category><![CDATA[技術]]></category><dc:creator><![CDATA[AIF EVENT]]></dc:creator><pubDate>Sat, 09 Sep 2023 14:00:00 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/09/siang--3-.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://staging.edge.aif.tw/content/images/2023/09/siang--3-.jpg" alt="AI如何辨認螢幕前的人是不是真人？活體辨識技術的發展與挑戰"><p>活體辨識最主要的目的就是辨識偵測對象是否為真人，生活中最常見的情境就是指紋或臉部影像辨識，以臉部樣本的活體辨識來說，模型所要執行的任務就是判斷被偵測的臉部影像是不是真的人臉，其他狀況如帶著面具、翻拍畫面等都會被視為非活體的樣本，而這些非活體的樣本在臉部活體辨識領域通常被稱為攻擊樣本（Attack Data）。因此，要如何以人工智慧辨別眼前這張臉是活體還是攻擊，一直是學界、業界都想解決的問題。</p><h3 id="-ocim">認識臉部活體辨識四種常見的資料集：OCIM</h3><p>從學術研究角度切入，早期提出的論文多半以手工打造特徵，例如使用局部二值模式（Local Binary Patterns, LBPs）搭配人工設計的數學運算進行特徵萃取，再連接支援向量機（Support Vector Machine）或是隨機森林（Random Forest）這類的機器學習模型進行分類。</p><p>當深度學習再次引起熱潮後，臉部活體辨識領域也受到影響紛紛引入相關概念；同時，隨著更多大型公開資料集發表，相關論文發表數逐年升高，模型表現不斷成長，實際應用的場域也更加多元。</p><p>在研讀臉部活體辨識的相關論文時，通常會發現以下四種資料集：(1) OULU-NPU (2) CASIA-FASD (3) SiW (4) MSU-MUSD，這四個資料集被合稱為 OCIM，也是約定俗成的評估協定，不同的模型都會以這四個資料集進行訓練並計算 Half Total Error Rate （HTER） 與 Area Under Curve（AUC）兩項評估指標。包括 OCIM 在內 ，大多的公開資料集在簽署使用者授權合約（End User License Agreement, EULA）後就能下載使用，要特別注意的是，有些資料集會限制不能作為商業用途。</p><p>如果要進行臉部活體辨識任務，網路上已經有許多公開資料集，只要簽署 EULA 就能下載。然而如果牽涉商業用途，就需特別注意合約中是否有相關限制，且在蒐集訓練資料時，也要考慮到部署環境與資料變異性，衡量是否還要再自行蒐集更多樣本。</p><h3 id="-">臉部活體辨識任務的新突破與挑戰</h3><p>近年的臉部活體辨識任務，模型架構都以卷積神經網路（Convolutional Neural Network, CNN）為主，並依任務類型設計不同的損失函數（Loss function），甚至近兩年也開始看到以 Vision Transformer（ViT）為基礎的模型。2022 年發表的 PatchNet，除了將樣本分類成活體或攻擊以外，更細分出是何種類別的攻擊。整體模型的輸入是由原始影像隨機切出兩塊補丁，通過以 ResNet-18 為骨幹的編碼器（Encoder）後再進行分類，這也是名稱中「Patch」這個字的由來。原文中的 Ablation Study 一詞，也說明了在訓練時使用的「Asymmetric AM-Softmax Loss」與「Self-Supervised Similarity Loss」能確實提升模型表現。由於設計模型時，大部分的研究會加入更多種損失函數來提供不同誤差資訊，造成的結果會比只使用分類誤差還要好。</p><p>同樣在 2022 年發表的 SSAN，則提出了「Content information」與「Style information」的特徵，兩者由不同的卷積層萃取出。它們分別代表臉部共通的特徵（可以想成無論是活體或攻擊樣本，都是一張人臉）與不同資料集或攻擊類別（例如翻拍、面具等等）所帶有的特徵。SSAN 除了提供常見的 OCIM 效能，也針對多達 12個資料集進行測試。結果發現，當訓練與測試資料涵蓋的資料及不重疊時，效能隨即降低。作者也提出學界和業界存在隔閡，推測可能的原因是學界常用的資料集數量較少，變化也較有限，在某些類別或資料集容易使模型過擬合，也讓學界的研究始終離商業用途還有一段距離。</p><p>近年來，由於 Transformer 席捲各個領域，連活體辨識也開始出現相關應用。2023 上半年，DiVT 以 MobileViT 作為骨幹，進行臉部活體辨識的分類任務，於 OCIM 測試的效能幾乎完勝過往的 State-of-the-art（SOTA）模型。論文中也嘗試從 MobileViT 換成其他骨幹如 ResNet-18 或 Swin Transformer 等等，但成效多半都不及 MobileViT。</p><p>基於 DiVT 的研究成果，未來可以預期會有更多以 Vision Transformer 為基礎的模型出現在臉部活體辨識。然而活體辨識的相關應用，常常牽涉金融或機敏資料，要如何達到客戶以及政府主管機關的要求，並且兼顧使用體驗，也是開發時必須思考的一環。</p><p>想了解更多活體辨識技術，請參考【AI CAFÉ 線上聽】別想騙過人工智慧！活體辨識技術的發展與挑戰</p><figure class="kg-card kg-embed-card"><iframe width="356" height="200" src="https://www.youtube.com/embed/gtTzVBVOTVc?start=1&feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="【AI CAFÉ 線上聽】別想騙過人工智慧！活體辨識技術的發展與挑戰"></iframe></figure>]]></content:encoded></item><item><title><![CDATA[改良1D卷積神經網路用於金融商品預測]]></title><description><![CDATA[如何將 AI 應用於金融商品交易領域，一直是個熱門議題。例如預測下一個時間段的漲跌，進而判斷是否要進場？]]></description><link>https://staging.edge.aif.tw/express-ai-financial-markets/</link><guid isPermaLink="false">6500350103e86b00010f4840</guid><category><![CDATA[論文快讀]]></category><category><![CDATA[技術]]></category><dc:creator><![CDATA[AIF 技術發展中心]]></dc:creator><pubDate>Mon, 04 Sep 2023 05:22:50 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/09/-------AI.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: html--><img src="https://staging.edge.aif.tw/content/images/2023/09/-------AI.jpg" alt="改良1D卷積神經網路用於金融商品預測"><p>這篇文章將聚焦於 AI 在金融商品交易領域的應用。我們會介紹一篇名為《Financial Markets Prediction with Deep Learning》（註1）的論文，並附上筆者評論，同時嘗試複現論文中提出的方法，將其應用於台指期貨交易，以驗證其效能。（Demo 程式碼可於文末取得）</p>
<p>該論文提出了一個新穎的模型結構，更在問題定義、預測目標 Y label 的界定方式，以及尋求實際交易場景下可應用的評估指標等方面，做出有意義的貢獻且極具參考價值。不僅有助於深入了解金融市場預測挑戰，也為實際利用 AI 交易策略的制定提供有益的建議，因此，本次我們選擇分享這篇論文，希望能將其中的觀點傳遞給讀者。</p>
<h3 id="2171161a-0e95-4d1b-a80f-874d77e0fc86" class>定義問題</h3>
<p>AI 目前在金融交易上的應用，不外乎為預測漲跌（分類問題）、預測下一時間的價格（迴歸問題），或是使用強化學習讓 AI 模型直接操作買賣，這些皆是希望達到低買高賣、高賣低買等目的，使交易能夠有正損益。</p>
<p>本文主要希望預測下一個時間段是漲、跌或平盤，進而讓交易者能夠判斷是否要進場進行交易。因此，可將此視為分類問題。</p>
<p>預測目標的設計，這邊有幾種制定方法，舉例說明如下：</p>
<p><ol type="1" id="833f5410-0aa4-48f6-8a2f-d660ae44b373" class="numbered-list" start="1"><li>根據下一個 K 線收盤價大於或小於當前 K 線收盤價，訂出漲或跌</li></ol><ol type="1" id="3a542048-d7bc-484f-bc5b-360cc4e07818" class="numbered-list" start="2"><li>當目標超過某個範圍，例如下一個 K 線的收盤價漲跌，超過前一個 K 線收盤價 20 點，就稱為漲/跌/平盤</li></ol><ol type="1" id="20ca7dc9-e2f5-4b01-bca2-d494cde4eaeb" class="numbered-list" start="3"><li>根據前幾筆資料的價格波動來制定範圍，因為下一個 K 線的漲跌幅，往往會根據前一段時間的盤勢而有變化，例如當前盤勢走動很劇烈，那可以想像下一個 K 線會走出一大段的機率很高。這也是這篇論文使用的方法，論文使用當前 K 線往回數 10 個 K 線收盤價的變異數，乘上一個變數後決定這個範圍，公式如下:</li></ol></p>
<p><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msub><mi>l</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mrow><mo fence="true">{</mo><mtable rowspacing="0.3600em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>u</mi><mi>p</mi><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>i</mi><mi>f</mi><mtext> </mtext><msub><mi>c</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>≥</mo><msub><mi>c</mi><mi>t</mi></msub><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><mi>α</mi><msub><mi>v</mi><mi>t</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mi>o</mi><mi>w</mi><mi>n</mi><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>i</mi><mi>f</mi><mtext> </mtext><msub><mi>c</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>≤</mo><msub><mi>c</mi><mi>t</mi></msub><mo stretchy="false">(</mo><mn>1</mn><mo>−</mo><mi>α</mi><msub><mi>v</mi><mi>t</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>f</mi><mi>l</mi><mi>a</mi><mi>t</mi><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>o</mi><mi>t</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>w</mi><mi>i</mi><mi>s</mi><mi>e</mi></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">l_{t+1}
\begin{cases}
up, &amp;if\ c_{t+1} \ge c_t(1+\alpha v_t) \\
down, &amp;if \ c_{t+1} \le c_t(1-\alpha v_t)\\ 
flat, &amp;otherwise
\end{cases}</annotation></semantics></math></p>
    <p>其中 <style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>c</mi><mi>t</mi></msub></mrow><annotation encoding="application/x-tex">c_t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">c</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2805559999999999em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">t</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span></span><span>﻿</span></span> 代表 <style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi></mrow><annotation encoding="application/x-tex">t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.61508em;vertical-align:0em;"></span><span class="mord mathnormal">t</span></span></span></span></span><span>﻿</span></span> 時間點的收盤價，<style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>α</mi></mrow><annotation encoding="application/x-tex">\alpha</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.0037em;">α</span></span></span></span></span><span>﻿</span></span> 是一個常數，論文中設定為 0.55，<style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>v</mi><mi>t</mi></msub></mrow><annotation encoding="application/x-tex">v_t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">v</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2805559999999999em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">t</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span></span><span>﻿</span></span>代表一段時間的變異數，這裡是設定 10 個時間的變異數。</p>
<!--kg-card-end: html--><!--kg-card-begin: markdown--><p><img src="https://staging.edge.aif.tw/content/images/2023/09/----123.png" width="700" alt="改良1D卷積神經網路用於金融商品預測"><br><font size="3">（圖片來源：人工智慧科技基金會）</font></p>
<!--kg-card-end: markdown--><!--kg-card-begin: html--><h3>資料型態</h3><ol type="1" id="eae6f9a8-f48e-4b5d-b35d-82ef5416d55a" class="numbered-list" start="1"><li>原始資料：<ol type="a" id="8948c5f8-6234-4496-8ce2-ea8d5e80e9b7" class="numbered-list" start="1"><li>包含幾種商品：輕原油期貨（CL）、天然氣期貨（NG）、黃豆期貨（S）、黃金期貨（GC）、那斯達克 100 指數期貨（NQ）、標普 500 期貨（ES）</li></ol><ol type="a" id="236ad4e7-ba5b-43f2-a62e-85d51695edcc" class="numbered-list" start="2"><li>2010 年 1 月 - 2017 年 12 月，每個商品含有約 33 萬-40 萬筆 5 分 K 的資料。</li></ol><ol type="a" id="6a4ac68b-cf67-488f-98ea-352465d2e886" class="numbered-list" start="3"><li>資料欄位有: date, time, open price, high price, low price, close price, trading volume，共六個欄位。</li></ol></li></ol><ol type="1" id="9314f492-43af-458a-86ac-f7538bc93ebc" class="numbered-list" start="2"><li>額外使用的技術指標:<ol type="a" id="8948c5f8-6234-4496-8ce2-ea8d5e80e9b7" class="numbered-list" start="1"><li>EMA、MACD、Bollinger Bands、RSI、CCI、VWAP、OBV、ADX、ADL、CMF、ROC。</li></ol></li></ol><ol type="1" id="8989885e-9e35-43fb-942c-e8ce88adb7aa" class="numbered-list" start="3"><li>模型預測的方法為利用歷史的兩個小時的時間段，去預測下一根五分 K 是漲或跌，來輔助交易決策。兩個小時的資料段包含了 24 個 5 分 K 資料，所以這個模型會參考兩小時去預測下一個五分鐘的盤勢如何走，筆者認為也可以拉得更長，有時候則需要參考更前一天的走勢等。</li></ol>
    <h3>模型設計</h3><ul id="ac911687-5276-47b4-8846-8ebd040350e8" class="bulleted-list"><li style="list-style-type:disc">Cross-Data-Type One-dimensional Convolution (CDT 1D-CNN)</li></ul><!--kg-card-end: html--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://staging.edge.aif.tw/content/images/2023/09/cdtcnn---1.gif" class="kg-image" alt="改良1D卷積神經網路用於金融商品預測"><figcaption>（圖片來源：人工智慧科技基金會）</figcaption></figure><!--kg-card-begin: html--><p>作者設計了一個名為 Cross-Data-Type One-dimensional Convolution 的 CNN 結構，從上面的動畫可以看出與一般的 1d-CNN 不同，作者希望做卷積的過程，能讓每個特徵獨立去卷積，而不是像一般的 1d-CNN 會把所有特徵同時捲入做計算。</p>
<p>論文中的結構設計如下：</p><!--kg-card-end: html--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://staging.edge.aif.tw/content/images/2023/09/------.png" class="kg-image" alt="改良1D卷積神經網路用於金融商品預測" srcset="https://staging.edge.aif.tw/content/images/size/w600/2023/09/------.png 600w, https://staging.edge.aif.tw/content/images/size/w1000/2023/09/------.png 1000w, https://staging.edge.aif.tw/content/images/2023/09/------.png 1448w" sizes="(min-width: 720px) 720px"><figcaption>（圖片來源：同註1）</figcaption></figure><!--kg-card-begin: html--><p>除了上述的 CDT 1-D CNN 結構之外，可以看到該文作者在 MaxPooling 的作法也是相同概念，在得到所有的特徵圖後，接著才進入全連接層中做特徵的運算。</p>
<p>筆者自己用類似概念刻的模型參考：</p>
<pre class="code"><code>def SimpleModel(input_shape):

    Input = keras.Input(shape=(input_shape), name=&quot;input&quot;)
        
    # x = tf.transpose(Input, [0,2,1])
    x = tf.expand_dims(Input, -1)
    x = layers.Conv2D(64, (4,1), activation=&#x27;relu&#x27; ,strides=(1,1), padding=&quot;same&quot;)(x)
    x = layers.Conv2D(64, (4,1), activation=&#x27;relu&#x27; ,strides=(1,1), padding=&quot;same&quot;)(x)
    x = layers.MaxPool2D((4,1),strides=(4,1))(x)

    x = layers.Conv2D(128, (3,1), activation=&#x27;relu&#x27; ,strides=(1,1), padding=&quot;same&quot;)(x)
    x = layers.Conv2D(128, (3,1), activation=&#x27;relu&#x27; ,strides=(1,1), padding=&quot;same&quot;)(x)
    x = layers.MaxPool2D((3,1),strides=(3,1))(x)

    x = layers.Conv2D(256,(2,1), activation=&#x27;relu&#x27; ,strides=(1,1), padding=&quot;same&quot;)(x)
    x = layers.Conv2D(256,(2,1), activation=&#x27;relu&#x27; ,strides=(1,1), padding=&quot;same&quot;)(x)
    x = layers.MaxPool2D((2,1),strides=(2,1))(x)
        
    x = layers.Flatten()(x)
    x = layers.Dense(1000)(x)
    x = layers.Dense(500)(x)
    x = layers.Dense(3, activation=&quot;softmax&quot;)(x)
    
    return  keras.Model(Input, x, name=&quot;MyModel&quot;)

Attribute_size, Period =  31, 24
model = SimpleModel((Period, Attribute_size))
model.summary()</code></pre>
<blockquote>筆者認為這樣的設計是符合邏輯的，經過這樣的運算後，下一層 feature map  的每一欄，都還是保持著各個獨立特徵運算後的結果。最後，再經由全連接層運算後，理論上是真的能透過模型自行訓練，並產生出一個新的技術指標。因為每個技術指標背後，也都是由成交價、成交量、時間區間等資訊，經過四則運算計算出來的結果。</blockquote>
<h3>模型評估</h3><p>在評估方面，有幾個面向可以考量，其中：</p><ol start="1"><li>實際使用這個模型進行交易，期望能夠得到最大的回報，也就是能賺錢</li></ol><ol start="2"><li>評估風險，除了賺多少錢之外，也想看使用這個交易策略承擔多少賠錢的風險，也就是夏普值</li></ol><ol start="3"><li>在 AI 模型使用上，當然會想看分類的評估指標，在這裡作者提出一個從 F Score 改良的 Weighted F-Score，讓這個評估指標更符合使用。</li></ol><p>以下就分別介紹這三種考量的指標：</p><!--kg-card-end: html--><!--kg-card-begin: markdown--><ol>
<li>實際交易回測
<ul>
<li>這篇論文的作者們，設計了一套方法來做歷史資料的交易回測，設定的細節筆者在這就不贅述，可以到原文中閱讀（註2），這邊只放回測的收益結果圖。</li>
</ul>
</li>
</ol>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p><img src="https://staging.edge.aif.tw/content/images/2023/09/-------1.png" width="700" alt="改良1D卷積神經網路用於金融商品預測"><br><font size="3">（圖片來源：註1）</font></p>
<ol start="2">
<li>較高的夏普值（Sharpe ratio）
<ul>
<li>夏普值不是一個在分類模型中可以立即使用的評估指標，例如準確度、Recall、Precision 都是可以直接影響到模型好壞的指標，甚至直接拿來當成 loss function 來影響模型的學習方向，夏普值則是需要透過回測後才能得到指標，通常做量化交易、程式交易的策略都會評估夏普值，因為除了看收益外，還需要檢視過程中能承受多少的回檔風險，越高的夏普值，代表每賺一個單位，所承受的風險越低。</li>
</ul>
</li>
<li>Weighted F-Score</li>
</ol>
<!--kg-card-end: markdown--><!--kg-card-begin: html--><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>N</mi><mrow><mi>t</mi><mi>p</mi></mrow></msub><mo>=</mo><msub><mi>N</mi><mrow><mi>t</mi><mi>u</mi></mrow></msub><mo>+</mo><msub><mi>N</mi><mrow><mi>t</mi><mi>d</mi></mrow></msub><mo>+</mo><msubsup><mi>β</mi><mn>3</mn><mn>2</mn></msubsup><msub><mi>N</mi><mrow><mi>t</mi><mi>f</mi></mrow></msub></mrow><annotation encoding="application/x-tex">N_{tp}=N_{tu}+N_{td}+\beta^2_3N_{tf}</annotation></semantics></math><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.969438em;vertical-align:-0.286108em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.28055599999999997em;"><span style="top:-2.5500000000000003em;margin-left:-0.10903em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">tp</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2805559999999999em;"><span style="top:-2.5500000000000003em;margin-left:-0.10903em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">t</span><span class="mord mathnormal mtight">u</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.33610799999999996em;"><span style="top:-2.5500000000000003em;margin-left:-0.10903em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">t</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.1002159999999999em;vertical-align:-0.286108em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-2.4518920000000004em;margin-left:-0.05278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">3</span></span></span><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.24810799999999997em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361079999999999em;"><span style="top:-2.5500000000000003em;margin-left:-0.10903em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">t</span><span class="mord mathnormal mtight" style="margin-right:0.10764em;">f</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span></span></span><span>﻿</span><p></p><p id="1c63ef8a-a79b-4ac7-8b86-2e8a6ed3a57c" class><style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>E</mi><mrow><mn>1</mn><mi>s</mi><mi>t</mi></mrow></msub><mo>=</mo><msub><mi>E</mi><mrow><mi>w</mi><mi>u</mi><mi>t</mi><mi>d</mi></mrow></msub><mo>+</mo><msub><mi>E</mi><mrow><mi>w</mi><mi>d</mi><mi>t</mi><mi>u</mi></mrow></msub></mrow><annotation encoding="application/x-tex">E_{1st}=E_{wutd}+E_{wdtu}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span><span class="mord mathnormal mtight">s</span><span class="mord mathnormal mtight">t</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.33610799999999996em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.02691em;">w</span><span class="mord mathnormal mtight">u</span><span class="mord mathnormal mtight">t</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.33610799999999996em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.02691em;">w</span><span class="mord mathnormal mtight">d</span><span class="mord mathnormal mtight">t</span><span class="mord mathnormal mtight">u</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span></span><span>﻿</span></span></p><p id="81e5706b-a1d6-485d-8eb3-797ec9d10a42" class><style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>E</mi><mrow><mn>2</mn><mi>n</mi><mi>d</mi></mrow></msub><mo>=</mo><msub><mi>E</mi><mrow><mi>w</mi><mi>u</mi><mi>t</mi><mi>f</mi></mrow></msub><mo>+</mo><msub><mi>E</mi><mrow><mi>w</mi><mi>d</mi><mi>t</mi><mi>f</mi></mrow></msub></mrow><annotation encoding="application/x-tex">E_{2nd}=E_{wutf}+E_{wdtf}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.33610799999999996em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="mord mathnormal mtight">n</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.969438em;vertical-align:-0.286108em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361079999999999em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.02691em;">w</span><span class="mord mathnormal mtight">u</span><span class="mord mathnormal mtight">t</span><span class="mord mathnormal mtight" style="margin-right:0.10764em;">f</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.969438em;vertical-align:-0.286108em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361079999999999em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.02691em;">w</span><span class="mord mathnormal mtight">d</span><span class="mord mathnormal mtight">t</span><span class="mord mathnormal mtight" style="margin-right:0.10764em;">f</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span></span></span></span></span><span>﻿</span></span></p><p id="7e33bb50-4329-4ad6-97dc-570445c086ef" class><style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>E</mi><mrow><mn>3</mn><mi>r</mi><mi>d</mi></mrow></msub><mo>=</mo><msub><mi>E</mi><mrow><mi>w</mi><mi>f</mi><mi>t</mi><mi>u</mi></mrow></msub><mo>+</mo><msub><mi>E</mi><mrow><mi>w</mi><mi>f</mi><mi>t</mi><mi>d</mi></mrow></msub></mrow><annotation encoding="application/x-tex">E_{3rd}=E_{wftu}+E_{wftd}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.33610799999999996em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">3</span><span class="mord mathnormal mtight" style="margin-right:0.02778em;">r</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.969438em;vertical-align:-0.286108em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361079999999999em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.02691em;">w</span><span class="mord mathnormal mtight" style="margin-right:0.10764em;">f</span><span class="mord mathnormal mtight">t</span><span class="mord mathnormal mtight">u</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.969438em;vertical-align:-0.286108em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361079999999999em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.02691em;">w</span><span class="mord mathnormal mtight" style="margin-right:0.10764em;">f</span><span class="mord mathnormal mtight">t</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span></span></span></span></span><span>﻿</span></span></p><p id="a001622d-6d51-479b-b916-572d00f5d439" class><style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>=</mo><mfrac><mrow><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><msubsup><mi>β</mi><mn>1</mn><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>β</mi><mn>2</mn><mn>2</mn></msubsup><mo stretchy="false">)</mo><msub><mi>N</mi><mrow><mi>t</mi><mi>p</mi></mrow></msub></mrow><mrow><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><msubsup><mi>β</mi><mn>1</mn><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>β</mi><mn>2</mn><mn>2</mn></msubsup><mo stretchy="false">)</mo><msub><mi>N</mi><mrow><mi>t</mi><mi>p</mi></mrow></msub><mo>+</mo><msub><mi>E</mi><mrow><mn>1</mn><mi>s</mi><mi>t</mi></mrow></msub><mo>+</mo><msubsup><mi>β</mi><mn>1</mn><mn>2</mn></msubsup><msub><mi>E</mi><mrow><mn>2</mn><mi>n</mi><mi>d</mi></mrow></msub><mo>+</mo><msubsup><mi>β</mi><mn>2</mn><mn>2</mn></msubsup><msub><mi>E</mi><mrow><mn>3</mn><mi>r</mi><mi>d</mi></mrow></msub></mrow></mfrac></mrow><annotation encoding="application/x-tex">F=\frac{(1+\beta^2_1+\beta^2_2)N_{tp}}{(1+\beta^2_1+\beta^2_2)N_{tp}+E_{1st}+\beta^2_{1} E_{2nd}+\beta^2_2 E_{3rd}}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.13889em;">F</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.7257599999999997em;vertical-align:-0.5916399999999999em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1341199999999998em;"><span style="top:-2.62642em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mopen mtight">(</span><span class="mord mtight">1</span><span class="mbin mtight">+</span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8051142857142857em;"><span style="top:-2.188485714285714em;margin-left:-0.05278em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">1</span></span></span><span style="top:-2.8448em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.31151428571428574em;"><span></span></span></span></span></span></span><span class="mbin mtight">+</span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8051142857142857em;"><span style="top:-2.188485714285714em;margin-left:-0.05278em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span><span style="top:-2.8448em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.31151428571428574em;"><span></span></span></span></span></span></span><span class="mclose mtight">)</span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.10903em;">N</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.29634285714285713em;"><span style="top:-2.357em;margin-left:-0.10903em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">tp</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2818857142857143em;"><span></span></span></span></span></span></span><span class="mbin mtight">+</span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31731428571428577em;"><span style="top:-2.357em;margin-left:-0.05764em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mtight">1</span><span class="mord mathnormal mtight">s</span><span class="mord mathnormal mtight">t</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span><span class="mbin mtight">+</span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8051142857142857em;"><span style="top:-2.188485714285714em;margin-left:-0.05278em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span><span style="top:-2.8448em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.31151428571428574em;"><span></span></span></span></span></span></span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3448em;"><span style="top:-2.3487714285714287em;margin-left:-0.05764em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="mord mathnormal mtight">n</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15122857142857138em;"><span></span></span></span></span></span></span><span class="mbin mtight">+</span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8051142857142857em;"><span style="top:-2.188485714285714em;margin-left:-0.05278em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span><span style="top:-2.8448em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.31151428571428574em;"><span></span></span></span></span></span></span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3448em;"><span style="top:-2.3487714285714287em;margin-left:-0.05764em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mtight">3</span><span class="mord mathnormal mtight" style="margin-right:0.02778em;">r</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15122857142857138em;"><span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.5102em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mopen mtight">(</span><span class="mord mtight">1</span><span class="mbin mtight">+</span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8913142857142857em;"><span style="top:-2.214em;margin-left:-0.05278em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">1</span></span></span><span style="top:-2.931em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286em;"><span></span></span></span></span></span></span><span class="mbin mtight">+</span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8913142857142857em;"><span style="top:-2.214em;margin-left:-0.05278em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span><span style="top:-2.931em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286em;"><span></span></span></span></span></span></span><span class="mclose mtight">)</span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.10903em;">N</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.29634285714285713em;"><span style="top:-2.357em;margin-left:-0.10903em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">tp</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2818857142857143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.5916399999999999em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span><span>﻿</span></span></p><p id="4d387622-882f-4fda-b644-65354f656456" class>
</p><br><p id="83b15e09-1c64-4f49-bac9-dc3ab3ba01ae" class>其中 <style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>N</mi><mrow><mi>t</mi><mi>p</mi></mrow></msub></mrow><annotation encoding="application/x-tex">N_{tp}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.969438em;vertical-align:-0.286108em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.28055599999999997em;"><span style="top:-2.5500000000000003em;margin-left:-0.10903em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">tp</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span></span></span></span></span><span>﻿</span></span> 代表著 True Positive 的數量，<style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>E</mi><mrow><mn>1</mn><mi>s</mi><mi>t</mi></mrow></msub><mo separator="true">,</mo><msub><mi>E</mi><mrow><mn>2</mn><mi>n</mi><mi>d</mi></mrow></msub><mo separator="true">,</mo><msub><mi>E</mi><mrow><mn>3</mn><mi>r</mi><mi>d</mi></mrow></msub></mrow><annotation encoding="application/x-tex">E_{1st},E_{2nd},E_{3rd}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8777699999999999em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span><span class="mord mathnormal mtight">s</span><span class="mord mathnormal mtight">t</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.33610799999999996em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="mord mathnormal mtight">n</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.33610799999999996em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">3</span><span class="mord mathnormal mtight" style="margin-right:0.02778em;">r</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span></span><span>﻿</span></span> 是 first type, second type, third type of error。</p><p id="372df4fd-2787-487b-9993-b0eb3b1c3771" class>其中的小字 <style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mi>t</mi><mi>u</mi><mi>d</mi><mi>f</mi></mrow><annotation encoding="application/x-tex">wtudf</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">wt</span><span class="mord mathnormal">u</span><span class="mord mathnormal" style="margin-right:0.10764em;">df</span></span></span></span></span><span>﻿</span></span> 分別代表著 <em>wrong, true, up, down, flat</em>。舉例來說，<style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>E</mi><mrow><mi>w</mi><mi>u</mi><mi>t</mi><mi>d</mi></mrow></msub></mrow><annotation encoding="application/x-tex">E_{wutd}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.33610799999999996em;"><span style="top:-2.5500000000000003em;margin-left:-0.05764em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.02691em;">w</span><span class="mord mathnormal mtight">u</span><span class="mord mathnormal mtight">t</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span></span><span>﻿</span></span> 就代表著 <em>wrong up true down</em> 的數量，也就是預測 up 但實際是 down 的狀況。</p><br><p id="24f6d588-1a4a-44ae-b9dc-9e4a06f58484" class>最後一行就是作者提出的 Weighted F-Score，</p><p id="4f2a9e04-0581-4d3f-af4d-a8359b254a67" class><style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>β</mi><mn>1</mn></msub><mo separator="true">,</mo><msub><mi>β</mi><mn>2</mn></msub><mo separator="true">,</mo><msub><mi>β</mi><mn>3</mn></msub></mrow><annotation encoding="application/x-tex">\beta_1, \beta_2, \beta_3</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.05278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.05278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.05278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">3</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span></span><span>﻿</span></span> 都是屬於可更改的參數，作者分別設定成 <style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>β</mi><mn>1</mn></msub><mo>=</mo><mn>0.5</mn><mo separator="true">,</mo><msub><mi>β</mi><mn>2</mn></msub><mo>=</mo><mn>0.125</mn><mo separator="true">,</mo><msub><mi>β</mi><mn>3</mn></msub><mo>=</mo><mn>0.125</mn></mrow><annotation encoding="application/x-tex">\beta_1=0.5, \beta_2=0.125, \beta_3=0.125</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.05278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord">0.5</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.05278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord">0.125</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.05278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">3</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0.125</span></span></span></span></span><span>﻿</span></span>。</p><p id="4707a744-c3ca-4dfc-adae-36fa22e4e056" class>
</p><br><p id="708586ca-41f4-42d0-b2ad-aefea91ef072" class>利用這個 Weighted F-Score 做為指標，是要讓一些情境的懲罰更大，比如預測上漲，但實際下跌時，這樣的損害會比預測上漲但實際是平盤時來得大，調整這樣子的參數，讓模型有比較合理的評估指標。<a href="https://gist.github.com/MagicUmom/4fc722acbda7054b5031c549215c7b2e#file-weighted_fscore-py">Weighted F-Score 程式碼連結</a></p>
<br>
<p></p><blockquote>筆者認為該篇論文提出這個評估指標的想法，十分值得參考，畢竟既有的評估指標並不適用於所有任務情境，可以透過不同任務的目標，並提出較適合的評估指標，是一個不錯的想法，甚至未來可以把它改良到 loss function 內，直接讓模型對這個目標做訓練。</blockquote><p></p><h3>實驗結果與結論</h3><p class>作者主要使用自己的模型結構，與其他傳統模型在不同的金融商品中做比較，比較結果如下圖，其中 CDT 1-D CNN 是論文提出來的方法，使用的評估指標是作者提出來的 Weighted F Score，比較有趣的現象是，不使用傳統技術指標時，反而會得到更好的效果。這也是作者在論文中所強調的，使用這個 CDT 1-D CNN 結構可以讓模型去開發出有用的特徵，而這些特徵的算法也與技術指標相似。</p><!--kg-card-end: html--><!--kg-card-begin: markdown--><p><img src="https://staging.edge.aif.tw/content/images/2023/09/----1-3.png" width="700" alt="改良1D卷積神經網路用於金融商品預測"><br><font size="3">（圖片來源：註1）</font><br>
<img src="https://staging.edge.aif.tw/content/images/2023/09/----2-2.png" width="700" alt="改良1D卷積神經網路用於金融商品預測"><br><font size="3">（圖片來源：註1）</font></p>
<!--kg-card-end: markdown--><!--kg-card-begin: html--><p>在上圖夏普值（Sharpe ratio）的比較上，作者提出來的方法表現得最好。</p>
<p>最後，作者做了一些總結與未來可修改的方向：</p><ol start="1"><li>可以朝更長的趨勢做學習，當前是兩個小時的資料，未來可以朝向日級別的時間預測。</li></ol><ol start="2"><li>資料品質，作者覺得在原始資料上有一些遺失，導致在回測方面有出現問題。</li></ol><ol tart="3"><li>標籤的類別，目前是三個類別，漲、跌、平盤，未來可以朝著多類別，如大漲、大跌等多類別的方向做預測。</li></ol>
<p>歸納這篇論文幾個可以學習的方向：</p><ol start="1"><li>提出一個不需要依賴技術指標的模型結構，CDT 1-D CNN。</li></ol><ol start="2"><li>定義 y 的方式，參考過去一段時間的變異數，決定下一個時間點的漲幅閾值</li></ol><ol start="3"><li>提出一個評估指標 Weighted F-Score，在實際交易上會在意的評估指標。</li></ol><h3>附錄：應用在台指期貨的實驗</h3><p>
</p><p><b>* <a href="https://drive.google.com/file/d/1o89R84cSnd-S5xTh6EmDIvVqtJdQIk6L/view?usp=sharing">DEMO 程式碼連結</a></b></p><p>
</p><p>上面的連結是一個小 DEMO，應用在 5 分 k 的台指期貨資料上，有興趣的讀者可以點進去玩玩看，而當中的模型與資料都是用最簡單的方式去呈現。</p><p id="0ba29132-66af-4369-bb43-5e118b23b649" class>可以額外去修改的是資料方面可以加入不同的特徵，例如台指籌碼資料、新增技術指標等等的方法增加特徵值。</p><p>模型方面後來修改成 transformer 類型的模型會將整體準確率與指標再往上提昇一些，而要注意的是資料上滿容易讓模型 overfitting 在 FLAT 上，所以 DEMO 裡面使用 Class Weight 的方法去改進，當然也能由資料或前處理下手，這部份就留給大家去實驗了，當然除了台指商品之外，其餘的金融商品也可以用類似的手段去讓模型學習，Happy Coding !</p>
<p>
<ul><li>註1. Financial Markets Prediction with Deep Learning 連結為 <a href="https://arxiv.org/abs/2104.05413">https://arxiv.org/abs/2104.05413</a></li></ul><ul><li>註2. 回測的設定方法在論文中的第五頁，IV. EXPERIMENTAL SETUP 篇章中的 B-(1) Backtest (From Finance Viewpoint)</li></ul></p><p>
</p>
<p>（撰稿工程師：<a href="https://aif.tw/teams/introduce/keith-wang.html" target="_blank">王維綱
</a>）
        </p><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Change Formula：在推動轉型前，先評估成功的可能性]]></title><description><![CDATA[轉型與變革，是很多企業又愛又怕的名詞。在瞬息萬變的市場中，與時俱進是企業永續的必要因應，然而，也正因為面對的是未知，成功的機率非常難以事先評估。已經提出並被企業應用超過半世紀的變革公式（Change Formula），可以提供一個較具體的框架，協助企業在啟動變革之前進行有效的評估。]]></description><link>https://staging.edge.aif.tw/innovation-formula-dvfsr/</link><guid isPermaLink="false">6500350103e86b00010f483f</guid><category><![CDATA[數位轉型]]></category><category><![CDATA[趨勢]]></category><dc:creator><![CDATA[溫怡玲]]></dc:creator><pubDate>Sat, 02 Sep 2023 14:56:11 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/09/Change-Formula.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://staging.edge.aif.tw/content/images/2023/09/Change-Formula.jpg" alt="Change Formula：在推動轉型前，先評估成功的可能性"><p>由心理學家David Gleicher在1969年首先提出，經過多位學者的修改與調整後的變革公式「D × V × F × S &gt; R」，其中包括左側的四大要素，分別是：</p><blockquote><strong>D：Dissatisfaction，對現況的不滿<br>V：Ennobling Vision，願景及希望達到目標<br>F：First concrete steps，能夠對準目標的第一個具體行動<br>S：Clear supports for follow through，可持續的支持系統</strong></blockquote><p>至於右側的R，則是對改變的阻力（Resistance to change）。</p><p>簡單來說，如果D乘以V乘以F再乘以S大於R，那麼變革才可能成功。值得注意的是，左側的四大變項是相乘而不是相加，意味著這四個因素缺一不可。其中若有一項是零，那麼其他項再大也沒有用。從這個公式延伸出很多具體的指標計算方式，但仍然必須視企業本身的條件不同、以及變革的影響範圍而訂，如果想進一步了解，可以上網搜尋相關論文與應用案例。</p><p>例如，數位轉型是企業變革的一種，所以，企業首先應該先有明確的痛點或者是不滿意之處，可能是成長停滯、品牌聲量不如理想等等；其次則必須知道改變之後希望達到的目標，而且最好能夠是明確的、可衡量的，例如「營收成長20％，且淨利成長30％」就比「業績增加」來得具體可行。</p><p>再往前進一步，通常能夠提出不滿與願景的人不少，只是在口頭上說說或創意發想也並不難，可是要有真正對準目標的第一個具體行動，而且能夠持續提供 支持的系統，就並不是那麼容易。值得一提的是，第一個具體行動很容易被誤認為就是開始增加每月業績目標或是直接導入系統……實際上，進行縝密的評估與策略討論，同樣也是「具體行動」的重要環節，但卻常常被誤以為只是不重要的口號，反而導致後續行動無以為繼。</p><p>變革為什麼困難？不管任何創新或改變，勢必會造成組織與流程的調整，當然會遇到來自慣性的阻力。例如雖然推動行政數位化，但財務部門仍然希望有紙本收據方便日後翻閱，於是使得其他部門報帳時又要寫紙本又要將資料輸入電腦，造成額外的負擔，而誤以為數位化是無效率的。</p><p>所以，在變革公式中並沒有特別說明R是什麼樣的阻力，這個部份必須留待企業自行盤點、確認。簡而言之，這個公式主要是提供一個簡單而直觀的變革框架，可視為企業內部聚焦且具啟發性的工具，而不是不變的規範或標準指標，必須根據不同的情境和目標，由企業內部進行動態調整和評估。</p><p>那麼，不妨藉此公式思考一下，當企業推動數位轉型時，應該按照什麼樣的流程來進行，才能夠有比較高的成功機率？如何建立持續的支持系統讓轉型成為企業的永續成長動力？</p>]]></content:encoded></item><item><title><![CDATA[不是只有送餐機器人跟QR Code！服務流程數據化，才能提升客戶體驗]]></title><description><![CDATA[大缺工時代，餐飲、零售等服務業都想盡辦法透過AI或機器人取代人力，例如自助點餐、結帳、送餐機器人、智能客服等，但是實際操作起來總是不順手、界面設計不符合使用者體驗，最後還是雙手一攤，呼喚真人服務人員，或是請對話機器人「轉真人」，也因此店家導入數位工具之後，卻被認為「沒有溫度」。]]></description><link>https://staging.edge.aif.tw/customer-and-digital/</link><guid isPermaLink="false">6500350103e86b00010f483e</guid><category><![CDATA[數位轉型]]></category><category><![CDATA[趨勢]]></category><dc:creator><![CDATA[陳梓元]]></dc:creator><pubDate>Sat, 02 Sep 2023 12:02:04 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/09/----------QR-Code-.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://staging.edge.aif.tw/content/images/2023/09/----------QR-Code-.jpg" alt="不是只有送餐機器人跟QR Code！服務流程數據化，才能提升客戶體驗"><p>數位化對服務業而言已是趨勢，導入數位工具勢在必行，但若只是單點使用，服務的過程沒有數據化並有效串接，就難以精準計算與分析服務品質與「服務良率」。也就是說，服務數據化的用意在於，找出隱藏的顧客洞察，擘劃清晰的顧客旅程（Customer Journey）進而創造以顧客為中心的服務品質。</p><h3 id="-">服務業數位化程度低 顧客旅程不易掌握</h3><p>人工智慧科技基金會《2022產業AI化大調查》指出，零售服務業數位化程度僅43.9分，落後於資通訊產業、製造業。其中「善用數據分析輔助商業決策制定，並將數位化視為必要任務」的比例，僅有11.3%，顯示產業邁向數位化仍有一段路要走。</p><p>相較於科技製造業，服務業規模較小，且數位化程度低，即代表業者沒有辦法有效地搜集用戶數據，沒有數據意味著沒有辦法清楚理解消費者動態。尤其在OMO虛實整合的時代，消費者的消費場景更加多元，若沒有數據的整合與支持，線上/線下就會形成斷點，造成顧客旅程破碎且模糊不清，難以提供以顧客為中心的服務。</p><p>《哈佛商業評論》提到，在過去20年許多企業一直嘗試實踐以顧客為中心的理念，但是僅14%的企業認為，以顧客為中心是他們的特點，只有11%的企業相信他們的客戶認同他們有做到。造成這樣的原因是，現有的客戶數據分析量、速度、種類，讓許多企業感到不堪重負，有些公司則是沒有系統和技術來分析客戶。</p><h3 id="--1">服務也可以計算良率？讓數據把控顧客體驗</h3><p>好消息是，隨著AI技術愈來愈成熟與普及，許多工具可以用以收集客戶數據，甚至計算服務良率，確保服務標準與品質。</p><p>台灣科技製造業堪稱護國群山，掌握全球晶片脈動，其中關鍵因素之一在於產品和元件的良率，良率愈高，表示缺陷愈少，產品符合規格，同時可以降低成本，提高利潤。但是服務業的產出通常是無形服務或體驗，沒有庫存，較難標準化，只能從相對主觀的「顧客滿意度」，經由顧客填寫的回饋，了解服務品質優劣，無法精準計算服務良率。</p><p>當然，顧客滿意度調查依然有其必要性，可以提供業者相當重要的資訊，了解消費者第一手的回饋，並且針對服務品質進行改善。然而，多數消費者礙於面子或是個性使然，不會當下直接表達真實感受，直到事後看到滿意度調查表結果，甚至網路評價，才能了解客戶的心聲，需要花費更多心力挽回信任。</p><p>近年來致力於協助自費醫療產業數位轉型的星醫美學集團，自行研發「動線隱密性管理系統（暗號系統）」，嘗試解決專業服務業品質不一致的問題，並且針對現場服務流程進行量化與良率計算。</p><p>暗號系統貫穿全服務流程，於每個服務站點（例如櫃檯報到、看診前諮詢、醫師看診、領藥等）設置感應設備，搭配顧客身上佩戴之追蹤裝置，定位定距啟動偵測，記錄每個服務站點的停留時間是否合理、是否達到標準，用以判斷顧客對於服務是否滿意。</p><p>顧客佩戴攜帶裝置在服務場域中移動，管理者和第一線服務人員可以透過「服務良率儀表板」即時監測顧客對於服務品質的回饋以及相關數據。一旦未達服務標準，即可立即調整，以提升整體業務表現。同時，顧客的需求主動得到了回應和解決，獲得了更好的服務體驗。</p><h3 id="--2">人力短缺用機器取代 卻沒有溫度？</h3><p>根據《哈佛商業評論》2021年「提升顧客服務體驗」調查中發現，客戶體驗/服務是企業在未來一年內優先投資的領域之一，而在這些負責顧客服務體驗的團隊中，有93%認為，確保客戶的詢問與需求得到適當的回應，對他們企業的成功非常重要。</p><p>然而，面對這些詢問與需求，如何有「溫度」地回應並且提供服務，對於企業主與第一線服務人員都是一大考驗。消費者對於服務品質的評價，有一部分來自於現場服務人員的專業與態度。目前市面上許多餐廳、旅館紛紛導入機器人，嘗試取代人力，降低因為缺工而帶來的衝擊，不過機器人也並非萬能（帶錯路、送錯餐等），這是否是解決根本問題之道？過度仰賴機器人反而會讓服務趨於制式、沒有溫度。</p><p>《哈佛商業評論》也提醒，面對新科技，通常第一個直覺反應是專注科技本身，不斷詢問：「這項科技能做什麼？」，然而，應該先去思考顧客有哪些痛點需要解決，然後再問：「這項技術能提供什麼幫助？」因此，每個企業需洞察目標顧客的需求與特性，進而採用合適的數位工具與之互動，展現服務的溫度。</p><p>例如，走進餐廳，服務人員帶領入座，解釋用餐規則後，留下菜單並且告知顧客掃描QR-Code點餐，這對一般快餐、簡餐餐廳或許是提升效率的方法（如果界面設計不好，就是另外一回事了），但對於高端的餐廳，就有不同的思維。「吃飯就是為了要放鬆，為什麼還要看手機？客人可以在用餐的兩個小時放鬆，忘掉煩惱。」竹北葛朗集團旗下頂級和牛燒肉品牌「嶼燒」總經理劉仙斌認為，餐飲業數位轉型不是單純讓客人自行操作，把原本的工作轉嫁到消費者，而是讓數位工具融入服務流程中，帶給顧客意外的驚喜。</p><p>他舉例，每組客人都會由一位專屬的服務人員，不止提供桌邊烤肉的服務，還為顧客介紹肉品，透過傳遞食材的故事，帶領客人認識不同的飲食文化，是一場經過安排、滿足五感的饗宴，「他就像整個包廂的主理人，Hold住全場，」劉仙斌提到，透過與客人的互動，可以了解某位客人喜歡吃什麼部位的牛肉，就會特別記下來，下次來的時候就會特別去開那個部位的肉，這不僅滿足客人需求，同時也可以精準控制成本。</p><p>未來這些都可以交由AI來處理，甚至可以根據前次點餐記錄，透過語音與ChatGPT對話，推薦客人可能會喜歡的餐點。因此，重點不在於使用了什麼數位工具，而是在於工具如何融入到整個服務場景與流程，協助第一線服務人員提供超過顧客預期的服務，同時也創造服務人員的獨特價值。</p>]]></content:encoded></item><item><title><![CDATA[用 MLDE 平台實作 PyTorch 卷積神經網路模型]]></title><description><![CDATA[機器學習模型的開發過程中，為了讓模型效能更好，通常資料科學家會設計實驗，擬定要嘗試的模型並對各個模型嘗試不同的超參數組合，以便從中找出表現最好的組合。正是因為要嘗試的組合非常多，可以想像過程中所產生的結果也不可計數，過往需要仰賴人工手動填寫表格，以利管理。]]></description><link>https://staging.edge.aif.tw/hpe-mlde-unboxing1/</link><guid isPermaLink="false">6500350103e86b00010f483c</guid><category><![CDATA[MLOPs]]></category><category><![CDATA[實作解析]]></category><category><![CDATA[技術]]></category><dc:creator><![CDATA[AIF 技術發展中心]]></dc:creator><pubDate>Mon, 28 Aug 2023 08:34:43 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/08/Shutterstock_1892676856.jpg" medium="image"/><content:encoded><![CDATA[<h3 id="-">哪些工具能幫助資料科學家開發深度學習模型？</h3><img src="https://staging.edge.aif.tw/content/images/2023/08/Shutterstock_1892676856.jpg" alt="用 MLDE 平台實作 PyTorch 卷積神經網路模型"><p>為了讓 AI 專案團隊可以更有效率的管理模型的版本，已有許多廠商針對這一塊需求推出能針對實驗紀錄與版本比較進行管理的產品或工具，例如 MLflow、ClearML、Comet ML 等。除了免去額外開發一套系統的負擔外，由於這些產品多半具有圖形化介面及內建的視覺化工具，就算不熟悉指令列也能快速上手。此外，如果有多 GPU 的主機，還能使用分散式訓練，達到加速的效果。但是，在常見的深度學習框架如PyTorch上，如果要達到分散式訓練，必須修改模型程式碼，如 PyTorch 所提供的簡單範例（*註1），從中會發現模型需要先經過 DistributedDataParallel 處理，開發者必須花更多時間在程式碼撰寫上。</p><h3 id="--1">什麼是超參數？更方便的超參數調教工具介紹</h3><p>提到機器學習模型時，超參數是控制訓練過程的設定值，需要在訓練前就做好設定，不同於自動從數據中學習的模型參數。需要調整的超參數，如學習率、批次大小、迭代次數等，都會對模型的性能、收斂速度和泛化能力產生重要影響。因此，超參數的實驗結果必須被追蹤紀錄，除了手動記錄外，也可以利用工具協助。Hewlett Packard Enterprise（HPE）所提出的 Machine Learning Development Environment（MLDE）解決方案，提供了自動化超參數（Hyperparameter）搜尋，開發者僅需以 MLDE 指定的方式建立模型（下一段的範例有詳細說明），再用一份 YAML 檔指定要搜尋的超參數範圍以及要使用的 GPU 數量，就能以一列指令完成超參數搜尋，並且模型訓練能以分散式運算來執行。訓練完成後，MLDE 內建幾種視覺化工具，可以將實驗結果呈現出來。</p><h3 id="-mlde-">實際在 MLDE 上進行卷積神經網路的訓練</h3><p>為此，我們嘗試以簡單的範例，在 MLDE 上進行實戰演練。這個範例是以 PyTorch 框架訓練簡單的卷積神經網路（Convolutional Neural Network, CNN），來辨識手寫數字。（*註2）若要以 MLDE 來開發，就必須先建立工作資料夾，這個資料夾包含以下幾個檔案：</p><ul><li>model_def.py：用來建立模型物件。</li><li>data.py：處理資料讀取。</li><li>layers.py：用來定義模型中的各層，以此範例來說就是定義CNN裡的各個卷積層（Convolutional layers）</li><li>hp_search.yaml：設定超參數搜尋的範圍以及演算法。</li></ul><p>我們先從 model_def.py 開始看起，底下是這份 py 檔中與模型建立有關的程式碼（*註3），其目的是定義模型架構。因為想要做超參數的搜尋，首先得把要嘗試的超參數以 self.context.get_hparam（"超參數名稱"）的格式取代，再到 hp_search.yaml 中設定 hp_name 的範圍。例如下面程式碼中我們會看到 nn.Conv2d(1, self.context.get_hparam("n_filters1"), 3, 1) 中，輸出通道數填入 self.context.get_hparam("n_filters1")，其他層的超參數，甚至是學習率也都能依照同樣方式取代。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
    <script src="https://gist.github.com/betty-art/6b0ec1570b7b5e1fb713514392459b93.js"></script></div><!--kg-card-end: html--><p>data.py 和 layers.py 的用途是資料前處理和建立一些層的物件，本文將略過這兩份檔案。接著就是 hp_search.yaml，這份 YAML 檔設定了實驗中的超參數，要在什麼範圍內搜尋，以及要使用的演算法，以下是範例中的 hp_search.yaml 內容（*註4）：</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
    <script src="https://gist.github.com/betty-art/fb6629a40eb11bb8da35962b2d3d0c1a.js"></script></div><!--kg-card-end: html--><p>我們看到 n_filters1 與其他在模型建立時填入的的超參數，都分別指定了要搜尋的範圍，在最底下的 searcher 則指定了搜尋方式與次數，例如這份檔案就是指定使用準確率（Accuracy），以及嘗試 128 次。resources.slots_per_trial 則是設定分散式運算要使用的 GPU 數量。最後的 entrypoint 則要填入模型定義的 py 檔以及其中模型的物件名稱。</p><p>接著簡單說明實驗的執行方式。由於 MLDE 需要在 Docker 容器中執行，所以先安裝 Docker 後，接著透過 pip 安裝 MLDE，即可在本機端啟動一個叢集（Cluster），指令如下：</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
    <script src="https://gist.github.com/betty-art/95b11b336938027afdcc79c052e27831.js"></script></div><!--kg-card-end: html--><p>移動到工作資料夾，於終端機執行以下指令即可開始執行實驗：</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
    <script src="https://gist.github.com/betty-art/674fcd2f958ed72116dd4655f5a10e2a.js"></script></div><!--kg-card-end: html--><p>接著終端機將輸出：</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
    <script src="https://gist.github.com/betty-art/f3bab28d10a3b41e9073991d06eb963a.js"></script></div><!--kg-card-end: html--><p>依顯示的實驗號碼，MLDE 會建立一個實驗紀錄的網站（*註5）。進到首頁後點選「Uncategorized」，再點選實驗號碼，就能進入這次實驗的頁面，例如這個範例就是 20 。）</p><h3 id="-loss-">模型的訓練成效好不好？ 請觀察 Loss  的變化</h3><p>至於模型訓練的成效好不好，通常會透過觀察 Loss 的變化作為評估，例如圖 1 中可以清楚觀察到不同實驗中的 Loss 下降情形。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh6.googleusercontent.com/0tV7pugjuuiTOny_sFA2nvEnZt2Qxzi0MZo8eLri-5UZtfsIJHT3Cin_8eEObBevDAopZt8ssuFDkjDsRlHuX4DgP2xameHDbVyzTuHgNPMUW_GgWuEvrOh-6d3ESzJ-3cLZSeWti8RWBbnpbmbpKSQ" class="kg-image" alt="用 MLDE 平台實作 PyTorch 卷積神經網路模型"><figcaption>圖1：MLDE對於所有實驗結果Loss的視覺化圖表。切換到「Validation」底下的「Learning Curve」即可檢視，MLDE以不同顏色代表不同次的實驗，並可在畫面底部的區塊檢視詳細資訊。(圖片來源：平台截圖）</figcaption></figure><p>若切換到「HP Parallel Coordinates」（ HP 為 Hyperparameter 於 MLDE 平台上的簡寫），如圖 2 所示，就能看到不同的超參數組合對應到的模型指標，包括 Loss 或 Accuracy。MLDE 提供了許多互動式圖表，以 HP Parallel Coordinates 來說，我們能篩選特定區間的超參數或指標，過濾出我們關注的實驗。開發過程中，隨著訓練資料不斷增加或是採用不同演算法，會訓練出不同版本的模型，因此資料科學家必須選擇可以使用的模型，或標記出版本，以便掌控要使用哪一個版本進行上線。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh4.googleusercontent.com/_7s0ss5urx891YTN10PnQk96GHfC5GD6zdw1kaRYXywXm3NIQgCe7nUY44VS3h3yEL0dAG83cbNSkVqif7Kj5ZhsKSOGL99H-QmzQ7KH6L4DRfLP1dqzK4H1VNaBYI4dlNa939jMKqcGLSjeDyo3a_8" class="kg-image" alt="用 MLDE 平台實作 PyTorch 卷積神經網路模型"><figcaption>圖2：超參數自動搜尋結果的視覺化呈現。切換到「HP Parallel Coordinates」即可檢視各個超參數對應到的實驗結果，線條顏色對應到該次實驗的Loss高低。（圖片來源：平台截圖）</figcaption></figure><p>使用 MLDE 訓練模型後，可在「Model Registry」頁面進行模型註冊，每一步驟都能以圖形化介面完成，如圖 3。「Cluster」能即時監控資源使用狀況，例如各使用者的 GPU 時數，以及系統運行紀錄（*註6）。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh3.googleusercontent.com/uDWpwFO1NzvB3_ZBnTnUB1GPc4uw9lY2prztpeH1f4SO0FcclVt6vVyGepwCu6BOuiJPyyrqCWRWPPV_Dvx_qW7EZKPbyWRk8wSHj8Nhn5i3lZDNBJqxFIMGbOI8ldMqWTD_iiAwIh4Sj4WlS5tHlt0" class="kg-image" alt="用 MLDE 平台實作 PyTorch 卷積神經網路模型"><figcaption>圖3：MLDE的模型註冊功能，使用者可以選擇要註冊的模型，進行模型的版本控制，也能自行加入模型的描述。(圖片來源：平台截圖）</figcaption></figure><h3 id="mlde-">MLDE為資料科學家帶來哪些好處？</h3><p>總結目前資料工程師的需求與 MLDE 提供的功能，以往需要耗費大量時間的超參數搜尋，現在只要在 YAML 檔輸入各個超參數的搜尋範圍，不需進入模型程式碼修改就能完成，若設備有多個 GPU，更能以內建的分散式運算縮短訓練時間。從 UI 切入，MLDE 以直覺且可互動的圖表，將實驗結果視覺化，讓訓練過程的 Loss、Accuracy 等指標一目了然。</p><!--kg-card-begin: html--><p>特別的是，系統預設的顏色看起來就不錯，即使直接用來報告也不會顯得簡陋。不過目前 MLDE 只支援部分的GPU種類，經測試無法使用 PyTorch 的 MPS  (Metal Performance Shaders)，主要原因是 MLDE 會開啟 Docker 容器來運行實驗，目前 Docker 的映像檔無法提供 macOS 上的 MPS 功能，在運算設備選擇上稍微受限。模型的版本控制對開發來說也是重要的一環，MLDE 提供模型註冊的功能，模型訓練與版本控制都能在單一平台完成，可以減少其他平台的學習時間，提升開發效率。而如果在開發過程中還需要更多功能，對於資料的版本控制，則可另外使用 HPE 的MLDM解決方案（*註7） 或是 DVC  （*註8） 進行版控，或是對於排程如有需求，也能導入 Prefect（*註9） 來實現。（撰稿工程師：<a href="https://aif.tw/teams/introduce/siang-wu.html" target="_blank">吳宇翔
</a>）
        </p><!--kg-card-end: html--><p><strong>參考資料與連結</strong></p><!--kg-card-begin: html--><p style="font-size:16px;margin-bottom: 10px;">註1：<a href="https://pytorch.org/tutorials/intermediate/ddp_tutorial.html" target="_blank">https://pytorch.org/tutorials/intermediate/ddp_tutorial.html</a></p>
<p style="font-size:16px;margin-bottom: 10px;">註2：範例來源請參考<a href="https://hpe-mlde.determined.ai/latest/tutorials/pytorch-mnist-tutorial.html" target="_blank">https://hpe-mlde.determined.ai/latest/tutorials/pytorch-mnist-tutorial.html</a></p>
<p style="font-size:16px;margin-bottom: 10px;">註3：本實作完整程式碼可於以下網址取得 <a href="https://github.com/AIF-TW/HPE-MLDE_MNIST-PyTorch" target="_blank">https://github.com/AIF-TW/HPE-MLDE_MNIST-PyTorch</a></p>
<p style="font-size:16px;margin-bottom: 10px;">註4：檔案可在註3連結中取得。</p>
<p style="font-size:16px;margin-bottom: 10px;">註5：如果在本機安裝的話，網址為 <a href="http://localhost:8080/" target="_blank">http://localhost:8080/</a>（首次使用需輸入帳號 determined，密碼為空白。詳見<a href="https://hpe-mlde.determined.ai/latest/tutorials/quickstart-mdldev.html" target="_blank"> https://hpe-mlde.determined.ai/latest/tutorials/quickstart-mdldev.html</a></p>
<p style="font-size:16px;margin-bottom: 10px;">註6：如果想用訓練好的模型進行推論，可參考以下程式碼 <a href="https://github.com/AIF-TW/HPE-MLDE_MNIST-PyTorch/blob/main/MLDE_MNIST_pred.ipynb" target="_blank">https://github.com/AIF-TW/HPE-MLDE_MNIST-PyTorch/blob/main/MLDE_MNIST_pred.ipynb</a></p>
<p style="font-size:16px;margin-bottom: 10px;">註7：MLDM 解決方案 <a href="https://www.pachyderm.com" target="_blank">https://www.pachyderm.com</a></p>
<p style="font-size:16px;margin-bottom: 10px;">註8：DVC 網址 <a href="https://dvc.org" target="_blank">https://dvc.org</a></p>
<p style="font-size:16px;margin-bottom: 10px;">註9：<a href="https://www.prefect.io" target="_blank">https://www.prefect.io</a></p>
<p style="font-size:16px;margin-bottom: 10px;">* 本篇文章由人工智慧科技基金會、HPE與AMD共同合作。</p><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://staging.edge.aif.tw/content/images/2023/08/AMD-HPE.jpg" class="kg-image" alt="用 MLDE 平台實作 PyTorch 卷積神經網路模型" srcset="https://staging.edge.aif.tw/content/images/size/w600/2023/08/AMD-HPE.jpg 600w, https://staging.edge.aif.tw/content/images/2023/08/AMD-HPE.jpg 851w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[AI技術的發展如何影響半導體的發展？專訪鴻海研究院半導體所所長]]></title><description><![CDATA[矽光子晶片新創公司Ayar Labs在2023年4月結束的最新一輪募資當中，再籌集了2500萬美元，甚至吸引輝達（NVIDIA）和創投公司Tyche Partners在這一輪中額外增加投資，這個消息也讓人對矽光子的未來發展充滿好奇與想像。]]></description><link>https://staging.edge.aif.tw/hhri-0906-kuo-preinterview/</link><guid isPermaLink="false">6500350103e86b00010f483b</guid><category><![CDATA[NExT Forum]]></category><category><![CDATA[觀點]]></category><dc:creator><![CDATA[ AIF Editor]]></dc:creator><pubDate>Sat, 26 Aug 2023 12:20:01 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/08/2000px_20221018_HHRI_0129.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://staging.edge.aif.tw/content/images/2023/08/2000px_20221018_HHRI_0129.jpg" alt="AI技術的發展如何影響半導體的發展？專訪鴻海研究院半導體所所長"><p>根據市場研究機構Yole的預測，矽光子市場（以裸晶計算）規模將從2021年的1.52億美元，增長至2027年的9.27億美元。對於許多已進入發展高原期的領域，矽光子市場正處於起飛階段，其預估的年複合成長率達36％，吸引國內外廠商高度關注並積極布局相關技術。</p><p>隨著網際網路、3C產品等科技的發展，人們得以隨時享受數位資訊時代的便利生活，同時也帶來了天文數字級的數位資訊處理量。根據估計，全球產生的數位資料量預計在不久的將來超過44 ZB（10^21位元組），這是面臨摩爾定律極限的半導體積體電路晶片技術的嚴峻挑戰。同時，為了因應AI技術快速 發展，目前除了AI基礎設施的投資在加速成長中，運算需求同樣必須朝向更快、更節能的方向發展。</p><p>半導體是一種介於導體（如金屬）和絕緣體（如陶瓷）間的特殊材料。其特點在於其電導特性可透過添加雜質或進行特殊處理來調整。當中最為廣泛應用的材料就是矽（Si）。而半導體中最基本的元件為二極體，僅允許電流在一個方向流動，並且能夠進行電流控制。這些元件是現代電子設備的基石。然而，目前使用銅導線的這些元件，面臨著嚴重的訊號損耗和難以散熱的問題。</p><p>「而矽光子是一種集成的光路技術，將能夠傳導光的線路集中在矽平台上，」鴻海研究院半導體所長郭浩中解釋。也就是說，矽光子是在矽的基礎上，將晶片中的「電訊號」轉換成「光訊號」以實現電信號和光信號的傳輸。而這項技術不僅能提升光電傳輸速度，還解決上述所提及的訊號損耗和熱量問題。因此，台積電、英特爾等半導體領域的巨頭皆已投入相關技術研發。</p><p>郭浩中提到，矽光子技術的發展推動了高速、高帶寬的光通信，這在大數據傳輸和雲計算等領域中至關重要。尤其隨著人工智慧的快速發展，許多應用需要龐大的計算能力。因此，結合矽光子技術與專為人工智慧任務而設計的半導體加速器，如圖形處理器(GPU)和專用AI晶片(ASIC)的發展，在增進處理大數據集和複雜模型的效率格外令人期待其發展潛力。</p><h3 id="-">台灣如何在半導體革新潮流中，開創新局？</h3><p>另一方面，為了滿足車用電子、5G通訊和綠色能源等應用，以及對高功率、高射頻和高可靠性解決方案的需求，尤其以氮化鎵(GaN)和碳化矽(SiC)為主的第三代半導體材料最受關注。​​郭浩中說，這些材料顯著地突破設備性能的極限，擁有更高的功率處理能力和頻率運行範圍；同時具備出色的熱特性和耐壓能力。</p><p>即將舉行的半導體盛會SEMICON Taiwan中，鴻海研究院再度攜手國際半導體產業協會(SEMI)舉辦(NExT Forum)主題論壇，並將以「EV Makes a Better Life - Communication, Sensing, Power」為主題，專注於探討化合物和車用半導體的技術趨勢與應用，更期待能藉此建立產學交流的平台，打造「More than Moore」新世代半導體應用路徑。</p><p>台灣過去憑藉其完善且高效的供應鏈以及世界領先的製造技術，在全球半導體產業中發揮引領作用。然而，隨著化合物半導體革新潮流的來臨，台灣必須善用自身的產業特色，以開創新的局面，引領這一領域的新興發展。這次論壇也將共同深入探析化合物和車用半導體的技術趨勢和應用，進一步強化台灣產業實力，並在下一代化合物半導體市場中鞏固地位。</p><p>除此之外，郭浩中特別提到，鴻海將在今年發射首顆低軌衛星，不僅意味其在造車領域的進一步發展，更象徵著「車聯網」的真正實現，將使電動車成為串聯海陸空通訊行動基地台的一部分。在萬物互聯的時代，連結不同世代的通訊技術，創造出無限可能。新世代通訊技術，包括5G、B5G甚至低軌衛星（LEO Satellite），將成為發展機器人和電動車的關鍵。</p><p>因此，研究院也會靈活運用B5G/6G的技術特點，發揮最大通訊能力，專注於智慧車聯網領域及相關技術，同時探索低軌衛星通訊技術及其垂直應用，建立一個將地面和空中聯繫在一起的3D行動通訊網絡。這項努力將不僅影響車聯網，還將對多個行業產生深遠影響，為未來的科技發展帶來新的前景。</p><p>而研究院在研究和開發方面則遵循中研院院士、鴻海研究院諮詢委員張懋中所提出的「Best Junction for the Function」原則，透過與產業界、學術界的合作共同開發車用關鍵零組件。合作夥伴包括鴻揚半導體和能創半導體等集團內的單位，以及國立陽明交通大學的教授團隊。期待藉由這種跨領域的合作加速技術創新，推動產業發展。</p><p>想了解最新半導體趨勢，歡迎報名09月06日由鴻海研究院與 SEMI 主辦 NExT FORUM，點此<a href="https://semicontaiwan.org/zh/Power_and_Opto_Semiconductor_Technology_Forum_2023">連結</a>立刻報名！</p>]]></content:encoded></item><item><title><![CDATA[攜手產學界開創新模式 鴻海研究院突破碳化矽半導體技術]]></title><description><![CDATA[受電動車市場快速成長影響，帶動第三代半導體的商機發展，其中，具備優越物理特性的SiC（碳化矽）更是吸引科技大廠投入資源，以在汽車動力系統的搶先卡位。而鴻海研究院近年來積極連結產學研究能量，與陽明交通大學及鴻揚半導體攜手合作，共同致力於高壓碳化矽元件的開發，也取得許多亮眼成果。]]></description><link>https://staging.edge.aif.tw/hhri-0906-sic/</link><guid isPermaLink="false">6500350103e86b00010f483a</guid><category><![CDATA[NExT Forum]]></category><category><![CDATA[觀點]]></category><dc:creator><![CDATA[NExT Forum ]]></dc:creator><pubDate>Sat, 26 Aug 2023 12:11:23 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/08/_---------------.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://staging.edge.aif.tw/content/images/2023/08/_---------------.jpg" alt="攜手產學界開創新模式 鴻海研究院突破碳化矽半導體技術"><p>目前碳化矽半導體多半由歐美企業主導，除了擁有技術優勢，在供應鏈上也已穩健佈局，例如美國碳化矽(SiC)材料領導廠商Wolfspeed不僅在美國建立首座8吋SiC晶圓廠，近期更於德國新建一座8吋SiC晶圓廠，積極展現其對碳化矽元件供應的高度重視。而作為歐洲領先製造商的英飛凌，除了向上鏈結既有的基板供應商，如WolfSpeed、安森美（OnSemi）、日本羅姆（Rohm），並且納入中國的SiC晶圓廠天岳和天科合達，以確保供應鏈的穩定性。</p><p>此外，意法半導體（STM）則和中國三安光電及重慶政府合資，共同興建一座8吋碳化矽半導體晶圓廠，以顯示全球對碳化矽的重視。而泛鴻海集團的盛新半導體也在今年成功產出台灣首片的8吋碳化矽晶圓，確保台灣在碳化矽產業供應鏈上取得一席位置。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh3.googleusercontent.com/douzYO_kU3dvKEh5bva-iN4m1CZPBCuLVtBCkfXvcE9LRMdDtgrcZ3NsBz4PQ8TvanMWyQPT3JTrUtkiHZogWtODtI6qvOrR7tFPq5R4GwntBDWZGpOqzfrsMpjlwhSzFMhcgesdaCSnGjoqmx9Kzg" class="kg-image" alt="攜手產學界開創新模式 鴻海研究院突破碳化矽半導體技術"><figcaption>圖一、碳化矽產業垂直產業鏈（圖片來源：鴻海研究院）<span class="-mobiledoc-kit__atom">‌‌</span></figcaption></figure><p>過去30年來，台灣憑藉完善且高效的供應鏈及世界領先的製造技術，在全球半導體產業中發揮引領作用。然而，隨著化合物半導體革新潮流的來臨，台灣必須善用自身的產業特色，以開創新的局面。近來，台灣在化合物半導體的發展上，也積極展現技術探索與突破能力，如鴻海科技集團在高功率碳化矽元件的發展上，採用虛擬IDM的概念，透過專業分工形式將盛新半導體（基板）、鴻揚半導體（專業代工廠）、能創半導體（模組）等製造商整合，發揮從上游到下游垂直整合的優勢。</p><p>在技術發展上，鴻海研究院也與陽明交通大學、鴻揚半導體攜手合作，共同致力於高壓碳化矽元件的開發，並取得令人驚艷的成果。例如在1700V高壓碳化矽元件性能上取得技術突破，透過獨特的設計，使導通電阻（Ron,sp）最低可達4.2mΩ-cm²，耐壓電壓（BV）；最高則可達到 2400V ，而 Baliga Figure of Merit（BFOM）更達到1.1GW/cm²。</p><p>此外，經過雙脈衝測試（DPT），封裝元件在高功率操作下依然能實現正常切換運作，其切換性能甚至媲美國際頂尖大廠的元件；且晶片的良率更高達九成以上。</p><p>這些令人振奮的研究成果再度凸顯鴻海研究院在半導體領域的努力，也顯示台灣半導體產業正透過結合產官學研的創新模式，持續攻克技術瓶頸，為半導體技術的發展開創嶄新道路。未來，歐美大廠及鴻海研究院的持續努力，將進一步推動碳化矽半導體技術的革新，為台灣半導體產業寫下更加輝煌的新篇章。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh3.googleusercontent.com/9lkW_ngGWBnhrX3sPeFZ7CbCzZ5YHeuGyzkU8KsDahK9Zde4yzKV4ZbQZ4qxQGCTx2OjEv4t7H2DQH4ckAQPnqQKizfp5JnOkhjiQ98bKpHXVnbmKLNtmeasstMGDHjMdkS-fgBWf8TSD2W4srDVzA" class="kg-image" alt="攜手產學界開創新模式 鴻海研究院突破碳化矽半導體技術"><figcaption>圖二、各元件大廠特性比較（圖片來源：鴻海研究院）</figcaption></figure>]]></content:encoded></item><item><title><![CDATA[VCSEL 助力 3D 感測技術與自駕車光達革新，提升機器視覺與環境互動能力]]></title><description><![CDATA[對於3D感測技術與自駕車光達(LiDAR)感興趣的人，或多或少都聽過垂直共振腔面射型雷射（vertical cavity surface emitting laser, VCSEL），也是科技產業新聞的熱門關鍵字，但VCSEL究竟是什麼，未來又有哪些新發展？]]></description><link>https://staging.edge.aif.tw/hhri-pre0906-vcsel/</link><guid isPermaLink="false">6500350103e86b00010f4839</guid><category><![CDATA[NExT Forum]]></category><category><![CDATA[觀點]]></category><dc:creator><![CDATA[NExT Forum ]]></dc:creator><pubDate>Sat, 26 Aug 2023 12:06:44 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/08/VCSEL-3D------------.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://staging.edge.aif.tw/content/images/2023/08/VCSEL-3D------------.jpg" alt="VCSEL 助力 3D 感測技術與自駕車光達革新，提升機器視覺與環境互動能力"><p>垂直共振腔面射型雷射（vertical cavity surface emitting laser, VCSEL）是一種半導體雷射元件，顧名思義，就是雷射光束垂直於頂面射出，與由邊緣射出的邊射型雷射（edge emitting laser, EEL）有所不同。</p><p>這種先進的雷射技術正為機器視覺與環境互動能力的提升帶來一場革命，為3D感測技術和自駕車技術的發展開啟嶄新的篇章。</p><h3 id="-vcsel-">高速成長的 VCSEL 市場</h3><p>根據知名調研機構 Yole Développement （Yole）發佈的《VCSEL–2022市場和技術趨勢》報告，由於智慧型手機、資訊通訊，以及車用等需求增加帶動成長，預估全球 VCSEL 市場將從 2022 年的 16 億美元，以 19.2% 複合年均成長率（compound annual growth rate, CAGR）成長，至 2027 年，將達到 39 億美元的市場規模。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh5.googleusercontent.com/FxCxM3PAU9Eo1qT2_3934i0LP60GkMNsGqjSb2xuD9z0ggSG6R_cKOM19_LF-HrYWK-xF3mFh7oTSOGMKXrveWrkfBQab858iKrGnfXC1BHbnmHtv3jn9SIEQlwanYb2yXGrG05pelFZVX4OVDeMWw" class="kg-image" alt="VCSEL 助力 3D 感測技術與自駕車光達革新，提升機器視覺與環境互動能力"><figcaption>圖一、Yole預估2022年至2027年的VCSEL市場成長預測。(Source: Yole Intelligence)</figcaption></figure><p>VCSEL 是由兩面分散式布拉格反射鏡（modified distributed Bragg reflectors, DBR），夾著一個主動層所組成的一種半導體雷射，該主動層通常具有一到數個量子井（quantum well, QW）。VCSEL的雷射光束垂直於頂面射出，因其結構允許雷射光束垂直向上或向下發射，這種垂直發射的結構不僅更容易進行製造和集成，且能更有效地與其他元件進行耦合。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh6.googleusercontent.com/hI-XjTCUSeSYJNj67w44rPdb8f8kT3XN5_djUtPLati0cwTjb1aI99CFSynTiNTBEnuUlu6U1Ke-PSmMSAzMwhMS918f1Kqi8nkUhJNAL03VpXWYSunjT8P4e4sTTwEh9QkYChd0UW-fZ_6St9hDzw" class="kg-image" alt="VCSEL 助力 3D 感測技術與自駕車光達革新，提升機器視覺與環境互動能力"><figcaption>圖二、傳統邊射型雷射EEL與垂直共振腔面射型雷射VCSEL之元件結構與雷射出光特性比較。（圖片來源：鴻海研究院）</figcaption></figure><p>相較於傳統邊射型雷射（EEL），VCSEL 產生的雷射光束通常具有較窄的光譜，在光通訊應用上也十分有利。此外，由於 VCSEL 相容於半導體製程，且不需如 EEL 的劈裂製程，VCSEL 的製造過程可以輕易大批量生產，有助於降低生產成本，這也是為什麼 VCSEL 在大規模消費產品，如智慧型手機中得到廣泛應用的原因之一。</p><h3 id="-vcsel--1">更高的性能與高度可擴展性，VCSEL 將帶來新變革</h3><p>此外，國立陽明交通大學（NYCU）講座教授郭浩中、國家實驗研究院科技政策研究與資訊中心與鴻海研究院（HHRI）洪瑜亨博士團隊攜手合作，從相關的論文與專利發表，研析各式雷射元件的發展情形，找出關鍵角色與技術進展趨勢，並為應用於光達場景的下一世代雷射提出看法，其研究成果《Progress of photonic-crystal surface-emitting lasers: a paradigm shift in LiDAR application》已發表在國際知名光電期刊 Crystals。全文詳見：<a href="https://doi.org/10.3390/cryst12060800">https://doi.org/10.3390/cryst12060800</a>。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh5.googleusercontent.com/A5HnnTX6dqgPqrm8GIy3D57w3zY1n2N4Jb41CkEKBxhEStNhFYYSDzCtm_IOt-YilXaj6TDHid9TWQhMzWlJazSvgasalA64Wt_a-KjjTbheN_DLt9jJ5W99ExQM3NMWsSxIwhUCQ56gaO98nUdzuQ" class="kg-image" alt="VCSEL 助力 3D 感測技術與自駕車光達革新，提升機器視覺與環境互動能力"><figcaption>圖三、垂直（V）與覆晶式（F）設計之VCSEL於室溫操作之溫度特性比較。（圖片來源：鴻海研究院）</figcaption></figure><p>針對不同功率所需，VCSEL 具有高度可擴展性，當多個 VCSEL 在平面上形成陣列結構，我們稱之為 VCSEL 陣列。這種設計加倍增加了 VCSEL 的功率和多功能性，更適合高功率的應用場景。此外，針對於這種應用場景，郭浩中也與鴻海研究院(HHRI)研究團隊攜手合作，利用覆晶式設計(flip-chip design)，可有效提高散熱效率，相關研究《High-Speed and High-Power 940 nm Flip-Chip VCSEL Array for LiDAR Application》已發表於國際知名光電期刊Crystals。全文詳見<a href="https://doi.org/10.3390/cryst11101237"> https://doi.org/10.3390/cryst11101237</a>。<br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh4.googleusercontent.com/zoFxPC4rYseql3nQpR0aD_Y6VIDQ3pT_Jle3Waw0xAajD4lHk5UfZs8HbY4no2xvmsWHeNVp5R8wtg80XuYH7UgSQ9JOOakzNxyWwCIcQywlFkGH_mMQxlM1Rqc87EKL-Zn4loPefyFR4HbJEPNwsw" class="kg-image" alt="VCSEL 助力 3D 感測技術與自駕車光達革新，提升機器視覺與環境互動能力"><figcaption>圖四、所開發的高品質的單模態VCSEL側視圖（圖片未按比例繪製）。（圖片來源：鴻海研究院）</figcaption></figure><p>為了能更進一步提升 VCSEL 的雷射出光品質，並且能用於大規模製造高品質的單模態 VCSEL （single-mode VCSEL, SM-VCSEL），郭浩中與國立台灣大學、美國伊利諾大學厄巴納-香檳分校（與鴻海研究院研究團隊進行跨國合作，攜手探討以原子層沉積法（atomic layer deposition, ALD），沉積 Al2O3 通道封閉膜。該技術可以有效地減少 VCSEL 側壁的缺陷，從而顯著提高元件性能，實現高達 29.1 GHz 的調制頻寬，其研究成果《29GHzsingle-modevertical-cavity surface-emittinglaserspassivatedbyatomic layerdeposition》已發表在國際頂尖光電期刊Optics Express。全文詳見<a href="https://doi.org/10.1364/OE.474930"> https://doi.org/10.1364/OE.474930</a>。</p><p>傳統的機器視覺能針對所擷取畫面的每一個像素進行編碼，但往往僅能得到二維的平面影像資訊，在深度資訊的獲取上具有一定難度。為了使機器能獲取立體視覺，像是在模仿人類雙眼，利用兩個投影點成像間的距離差便能計算出立體的資訊，也就是所謂的利用雙鏡頭（duo camera）景深相機來獲取立體視覺（stereo vision）。但這種深度的計算方式，主要仰賴於所拍攝的兩張影像，並不會主動投出光源做感測，這將導致較低的精確度且系統延遲較高；更致命的是，這種獲取立體資訊的方式並無法在昏暗環境中使用，也較難滿足如智慧型手機及自駕車等要求低系統延遲與全場景的使用情境。</p><p>因此，需要能夠主動獲取立體資訊的3D感測技術，因而開發出結構光（structured light）及飛時測距（time of flight, ToF）等技術。</p><p><em>3D 感測技術實為提升機器視覺能力，甚至進一步賦予機器與環境互動及行動化能力的關鍵。</em></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh5.googleusercontent.com/071wsIyogXOsWO8vcYYWc9gKB1B3DaVfk4j_KIWlJgOA9bgi63XvylJG8QGDdk7OWUafqjMtOU7-m-_LtSxCk3N4b0z6t2xB0hSYEbAhBzndBG3uFW9PRgSFyv_tfJJCf9kX-1-SDJHHRz95UC6UJA" class="kg-image" alt="VCSEL 助力 3D 感測技術與自駕車光達革新，提升機器視覺與環境互動能力"><figcaption>圖五、VCSEL 於消費者領域的3D感測技術發展趨勢（Source: Yole Intelligence）。</figcaption></figure><p>結構光與飛時測距都是主動式的感測技術，結構光主要是將特定圖案的光打到目標物體上，每個圖案的光都具備有特定的編碼（light coding），而不同深度（或表面起伏）的物體將導致原圖案扭曲變形，也就是說，我們可藉由比較圖案差異，來獲取深度資訊。目前，蘋果公司主要採用結構光獲取深度資訊，隨著 2017 年蘋果公司的 iPhone X 推出，蘋果公司以 VCSEL 作為雷射光源，為消費領域的 3D 感測技術和使用案例設定了標準，而消費者領域對於 VCSEL 的需求也就逐年俱增。<br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh4.googleusercontent.com/ZDiBAc_4IBmdcRorNTnHJskuZNSNy--rsxQXmgblxogV7asFV_Vfmst22bgKeM7daVIr-Cvt_BMYQHecUnX8TphNd7GwXAclhHzsEgWpHDsbBSgipNeMRZKLsArwDmi1UOppt7ROvzIc_31cq6dmOQ" class="kg-image" alt="VCSEL 助力 3D 感測技術與自駕車光達革新，提升機器視覺與環境互動能力"><figcaption>圖六、用於自駕車LiDAR領域的VCSEL陣列，能獲取充足的車輛與環境資訊。(Source: Lumentum)</figcaption></figure><p>而針對探測距離較遠的狀況，飛時測距技術則提供了較為可靠且簡單的解決方案。系統將計算所打出的光與反射光之間的時間差，由於光速與所測得的時間差都是已知的，因此可以分容易的獲取對應的距離，相比於結構光的運算簡單不少；在技術面，飛時測距能感測的距離較遠，且系統複雜度與成本也相對低，系統對於抵抗環境光干擾也較佳。</p><p>近年來，VCSEL 主要供應商 Lumentum 發布了多節 VCSEL 陣列（multi-junction VCSEL arrays），能夠產生足夠的雷射能量，有望提供比消費電子產品更長距離傳感所需的功率等級，提供自駕車 LiDAR 的探測距離所需。當 VCSEL 通過短脈衝（奈秒級）驅動時，可以達到高達數百瓦的極高峰值功率，使它們成為短、中、長程 LiDAR 系統的理想選擇。</p><p>由於 VCSEL 陣列帶來更高的性能與高度可擴展性，為現代 3D 感測技術和自駕車 LiDAR 探測提供所需的重要解決方案，無疑已成為許多變革性技術的前沿。</p>]]></content:encoded></item><item><title><![CDATA[科技如何讓每一樣食物啟動好的循環？]]></title><description><![CDATA[「台灣是全亞洲平均個人所負擔食物，浪費量最高的國家。」Tasteme創辦人暨執行長葉柏軍表示，由於選擇多元加上採購方便，加上業者刺激消費的推波助瀾下， 一年累積下來，平均每個人產生160公斤的廚餘量。]]></description><link>https://staging.edge.aif.tw/ic975-tasteme/</link><guid isPermaLink="false">6500350103e86b00010f4837</guid><category><![CDATA[ESG新賽局]]></category><category><![CDATA[新創]]></category><category><![CDATA[產業案例]]></category><dc:creator><![CDATA[楊育青]]></dc:creator><pubDate>Sat, 19 Aug 2023 14:57:56 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/08/Shutterstock_1614176698-Facebook---.jpg" medium="image"/><content:encoded><![CDATA[<h3 id="-">從「吃」開始，能改變什麼？</h3><img src="https://staging.edge.aif.tw/content/images/2023/08/Shutterstock_1614176698-Facebook---.jpg" alt="科技如何讓每一樣食物啟動好的循環？"><p>由於氣候變遷已是備受國際矚目的議題，從製造業開始的減碳趨勢，也逐步延伸到日常生活中，透過民生產業鼓勵個人與企業進行節能減碳。甚至食物的碳排量也開始受到關注，例如選擇更環保的飲食或減少吃到飽的消費方式，避免過度浪費。</p><p>即使全球每天約有三分之一的食物被浪費掉，但仍有些國家正飽受缺糧之苦，而食物的浪費量則依然持續攀升中。葉柏軍說，食物浪費並不是丟了就算，廚餘除了發酵或燃燒等處理方式，也可以當作豬的飼料，但現在因為擔心交叉感染的問題，沒辦法餵豬，大部份會發酵做為堆肥或直接燒毀，但這兩種同樣都會增加溫室氣體排放，也是造成氣候暖化的因素。而在許多地方仍需要面對糧食不足，許多人沒有東西吃的狀況下，台灣平均一個人一年卻能浪費掉160多公斤的食物，而這些浪費掉的食物換算下來，甚至是一個人一年份的三餐份量。</p><p>葉柏軍說，會想創辦Tasteme正是因為不願意看到食物就這樣浪費掉，且浪費的總量又十分龐大，才想到能透過媒合的機制，讓有需要的使用者能以低於產品市價的價格，買到即期食品，既能夠解決剩食問題，也為使用者省錢，同時更協助商家節能減碳。最終的目的，是希望市場上這些常見的食品或用品，可以盡可能被善加使用。</p><h3 id="--1">跟食物銀行的差別？</h3><p>雖然一般便利商店也有即期食品優惠的方案，甚至是坊間也有許多回收過剩餐點的食物銀行，葉柏軍解釋，一般食物銀行會需要收集餐點後再做整理，才有辦法進行下一波的配給，而配給的對象也僅限於特定名單，但Tasteme希望能讓惜食更為普及，開創出一個共享模式，用更有效率的方式，讓業者能以最簡單的方式，將剩食資訊提供給消費者。當消費者看到訊息，想要購買的話，就能直接到店取貨，減少中間收取貨物的流程，也避免安全性上的疑慮，另一方面，若中間有了人為或物流運輸的介入，成本與碳排量也會跟著提高。</p><p>Tasteme主要是透過App操作，使用者只要下載應用程式，登錄註冊後就能看到家裡附近可以購買的食品，而這些資訊都是由店家直接發出。當使用者下單購買後，就能在與業者約定的取貨時間到門市取貨。</p><p>過程中，除了需要數位技術進行串接，葉柏軍也坦言，最困難的就是與業者解釋與溝通經營模式的過程。尤其是循環經濟的概念，對於許多業者來說相對較新也較陌生，有的時候還要解釋自己並不是收廚餘，更不是要店家捐東西。兩年來，也逐步累積十萬多名的註冊用戶，並有上千家的合作店家，主要分布於雙北地區。</p><p>使用者多半為二十五到四十五歲，以小資族或有經濟考量者為主，另外，也有十八到二十四歲的用戶，而這群使用者價格便宜，更在乎「做環保這件事情很屌」的形象，也就是說，對於年輕人而言，環境與永續已經是企業經營時不能忽視的議題之一。</p><!--kg-card-begin: html--><p>欲了解更多，請收聽『<a href="https://www.ic975.com/aod/esg%e6%96%b0%e8%b3%bd%e5%b1%80/%e9%96%8b%e5%89%b5%e6%83%9c%e9%a3%9f%e5%8f%88%e5%9a%90%e9%ae%ae%e7%9a%84%e5%85%b1%e4%ba%ab%e5%b9%b3%e5%8f%b0-ft-tasteme%e5%89%b5%e8%be%a6%e4%ba%ba%e6%9a%a8%e5%9f%b7%e8%a1%8c%e9%95%b7/" target="_blank">開創惜食又嚐鮮的共享平台 —ft. Tasteme創辦人暨執行長葉柏軍</a>，』。</p><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[AI陪跑第一階段成果發表：讓AI開始走進中小型服務業的日常營運]]></title><description><![CDATA[由人工智慧科技基金會發起的「AI 陪跑實驗計畫，在iCHEF 資廚、 大店長讀書會，以及星醫美學等合作夥伴的支持下，第一階段課程順利落幕。參與此次實驗計畫的六家企業夥伴經過五週的課程學習後，在AIF顧問團隊的引導下，結合所學提出透過AI解決企業營運痛點的專案應用。]]></description><link>https://staging.edge.aif.tw/ai-accompany-classfive/</link><guid isPermaLink="false">6500350103e86b00010f4836</guid><category><![CDATA[產業案例]]></category><category><![CDATA[觀點]]></category><dc:creator><![CDATA[楊育青]]></dc:creator><pubDate>Sat, 19 Aug 2023 14:47:43 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/08/Shutterstock_269405042.jpg" medium="image"/><content:encoded><![CDATA[<h3 id="-ai-">用AI加速解決缺工議題</h3><img src="https://staging.edge.aif.tw/content/images/2023/08/Shutterstock_269405042.jpg" alt="AI陪跑第一階段成果發表：讓AI開始走進中小型服務業的日常營運"><p>本次參與計劃的成員中，來自苗栗的貢鍋共鍋麻辣火鍋店負責人蔣侑恩便提到，本次參與計畫的原因，是希望能藉由科技的幫助，縮短與都會區的差距，讓企業能在這一波潮流中趁勢而上，但人力問題也是目前企業需要面對的挑戰。</p><p>人工智慧科技基金會執行長溫怡玲提到，因為深知AI對各行各業帶來的影響與重要性，但AI卻很難走進中小型服務業的日常營運中，尤其對許多面向消費市場端的中小企業而言，面對人才缺乏的壓力，更需要善用科技工具；尤其對於傳統產業來說，若能成為第一個嘗試新做法的企業，就有機會能開創出一個新的營運模式，而這也是基金會對於陪跑計畫的期許。她也鼓勵在場企業，雖然今年經濟成長率不到2%，但主要是對科技製造業的影響，從各種經濟數據和專家的評估看來，接下來兩三年的內需市場仍會蓬勃發展，而這對在場業者來說，將是非常好的機會。</p><h3 id="-ai--1">行銷不是AI問題，而是策略問題</h3><p>受到ChatGPT、Midjourney等生成式AI影響，許多人也寄望能透過AI提升行銷成效，此次成果發表中也有企業提到，在行銷上因為無法掌握消費者的喜好，所以過去花了許多金錢在試錯，並希望能利用AI協助分析出受歡迎的廣告因素，並藉此生成出受消費者喜愛的圖文。</p><p>溫怡玲則提醒，行銷問題有時候不是AI能夠解決的問題，關鍵在於營運策略或品牌定位。尤其在消費者行為判斷上，更重要的是企業是否掌握並能分析了消費者旅程。另一個則是在不同行銷素材的比較上，由於很難確認歸因，有時候直接採用A/B 測試可能會比AI更快得知結果。</p><p>另一個AI應用較常被忽略的重點則是使用情境，例如期待透過推薦系統提高銷售，雖然使用者會是店舖主管，卻忽略了消費者才是使用服務的關鍵人物，他們為何使用、如何使用，必須深入使用情境才能夠準確掌握。</p><p>溫怡玲也提醒，並非所有的問題都需要用AI解決，企業必須要回歸原本的價值主張，並且思考專案執行後所能創造的效益，例如有便當業者提到，希望能根據菜價、天氣、歷史菜色組合等資料，運用AI預測及生成出合適的配菜表，而這個成果是否能延伸做為行銷或是其他應用的可能。</p><p>透過第一階段課程的學習，六家企業在AIF技術團隊的引導下，皆已提出初步AI專案問題，並經顧問評估過題目可行性。後續將會在與企業訪談後，依照企業實際情況，由專業顧問協助規劃與導入解決方案，或是媒合合適之新創企業協助。</p>]]></content:encoded></item><item><title><![CDATA[AI行銷為何不給力？你沒問對問題，就會錯失機會]]></title><description><![CDATA[有一家大型電信公司的行銷主管設法要減少顧客流失，於是決定運用AI來判斷哪些顧客最可能離開。他們取得AI的預測後，一再提供大量優惠促銷方案給高風險顧客，希望吸引他們留下來。雖然實施這項留住顧客的活動，但很多顧客還是離開了。為什麼？這些主管犯了一個基本錯誤：向演算法問錯了問題。雖然AI預測的內容很好，但沒有解決這些主管真正想解決的問題。]]></description><link>https://staging.edge.aif.tw/book-hbrs-must-reads-on-ai/</link><guid isPermaLink="false">6500350103e86b00010f4835</guid><category><![CDATA[觀點]]></category><category><![CDATA[精選書單]]></category><dc:creator><![CDATA[ AIF Editor]]></dc:creator><pubDate>Sat, 19 Aug 2023 14:42:12 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/08/--.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://staging.edge.aif.tw/content/images/2023/08/--.jpg" alt="AI行銷為何不給力？你沒問對問題，就會錯失機會"><p>這種情境太常出現在使用AI來做商業判斷的企業裡。《史隆管理評論》（Sloan Management Review）與波士頓顧問公司（Boston Consulting Group）在2019年針對2,500位高階主管所做的調查顯示，有90％的受訪者表示，他們公司有進行AI相關的投資，但其中不到40％的受訪者看到這些投資在一開始三年內帶來商業利益。</p><p>我們三名作者分別擔任學術、顧問與非常務董事的職位，曾研究和提供建議給超過五十家企業，檢視這些企業在行銷上運用AI時面臨的主要挑戰。我們從中找出行銷人員運用AI時最常犯的錯誤，加以分類，並發展出一項能避免這些錯誤的架構。讓我們先檢視一下這些錯誤。</p><h3 id="-">重點未校準：沒能問對問題</h3><p>我們研究的這家大型電信公司，主管真正該做的事情不是找出哪些顧客可能流失，而是應該弄清楚該如何運用行銷經費，來減少顧客流失。他們不應問AI哪些顧客最可能會離開，而應該問哪些顧客最可能被說服留下；換句話說，應該問哪些考慮離開的顧客，最可能會對促銷方案有回應？這就像政治人物會把力氣花在心意搖擺的選民上，主管也該把行動的目標，對準心意搖擺的顧客。前述這家電信公司的行銷人員，給予AI錯誤的目標，於是，把錢浪費在許多無論如何都會離開的顧客身上，但對於加倍花心力就能留住的顧客，卻投資不足。</p><p>另一個類似的例子，是一家電玩遊戲公司的行銷主管，希望鼓勵使用者在玩遊戲的同時多花點錢。於是，他也請數據科學團隊找出哪些新功能，最能讓玩家更投入。團隊運用演算法，找出可能的功能與顧客玩遊戲時間之間的關係，最後預測，如果提供獎品，並讓玩家排名的能見度更高，就能讓玩家花更多時間在遊戲上。公司根據這項結果做調整，但營收並未隨之提升。為什麼？因為這些主管同樣對AI問錯問題：不該問「如何讓玩家更投入」，而應該問「如何增加玩家在遊戲時花費的金額」。大多數玩家並未在遊戲裡花錢，因此這項策略未能奏效。</p><p>這兩家公司的行銷主管都沒有仔細思考要處理的商業問題是什麼，以及需要什麼預測，才能做出最佳決定。如果AI預測的是哪些顧客可能最容易被說服，或是哪些功能會讓玩家花更多錢，AI才會有價值。</p><h3 id="--1">利弊不對稱：沒能體認到「預測正確的價值」與「預測錯誤的代價」不同</h3><p>AI的預測應該愈準確愈好，不是嗎？不一定。差勁的預測，有時候代價極為高昂，但有時候代價不那麼高；同樣地，超級精準的預測，在某些情況下的價值比較高。行銷人員，或更重要的是他們依賴的數據科學團隊，就常會忽略這一點。</p><p>以一家消費性商品公司為例。這家公司的數據科學家很自豪地宣布，他們提高新銷售量預測系統的準確度，錯誤率從25％降到17％。遺憾的是，他們改善這套系統的整體準確度，是因為提高低毛利產品的預測精準度，同時降低高毛利產品的預測準確度。低估對高毛利產品的需求，這情況造成的成本，遠高於正確預測低毛利產品的需求所創造的價值，因此在公司實施這套「更準確」的新系統之後，獲利下降了。</p><p>必須了解的一項重點是，AI預測可能有各種不同的錯誤。預測除了會高估或低估結果之外，還可能會出現偽陽性（例如，指出顧客可能會流失，但其實顧客會留下），或者偽陰性（指出顧客不可能流失，但其實顧客後來離開了）。行銷人員的工作是要分析這些類型錯誤的相對成本，而這幾項成本可能差異很大。然而，負責建立預測模型的數據科學團隊常會忽略這種相對成本差異很大的狀況，或甚至沒有人告知他們這種情況，於是，他們假定所有的錯誤都同樣重要，導致出現代價高昂的錯誤。</p><h3 id="--2">本文觀念精粹</h3><p><strong>問題</strong></p><p>所有投資AI的公司中只有不到40%的公司獲得收益。這個高失敗率通常是由於領導者和管理者犯下的三個錯誤：</p><ul><li>他們沒有提出正確的問題，結果指示AI去解決錯誤的問題。</li><li>他們沒有認識到正確的價值與犯錯的成本之間的區別，並假設所有預測錯誤是等同的。</li><li>他們沒有充分利用AI做出更頻繁和更細緻的決策的能力，而是繼續沿用他們的舊做法。</li></ul><h3 id="--3">解決方案</h3><p>一個三步驟的框架將有助於開放市場行銷和數據科學團隊之間的溝通管道。這個框架讓團隊結合各自的專業知識，並在AI預測和商業決策之間建立一個回饋循環，這涉及到三個問題：（1）我們試圖解決的市場行銷問題是什麼？（2）在我們目前的做法中有沒有任何浪費或錯過的機會？以及（3）是什麼東西／事情造成這些浪費和錯過的機會？</p><p>本文作者／伊娃．艾斯卡查Eva Ascarza、麥克．羅斯Michael Ross、布魯斯．哈帝Bruce G.S. Hardie</p><!--kg-card-begin: html--><p>本文節錄自<a href="https://bookzone.cwgv.com.tw/book/BCB807" target="_blank">《哈佛商業評論推薦必讀AI趨勢》</a>，由天下文化授權轉載。</p><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[人類的情緒變化，AI真的能辨識出來，還能分析應用？]]></title><description><![CDATA[每一天，我們都會有開心、難過或是生氣等等不同的情緒反應，大多時候，人類可以透過觀察臉部表情或動作，看出對方的情緒；也可以從語氣或是對話描述聽出說話者的心情。那麼，電腦也可以看出或聽出人類的情緒嗎？]]></description><link>https://staging.edge.aif.tw/aicafe-0628-emotion-recognition/</link><guid isPermaLink="false">6500350103e86b00010f4832</guid><category><![CDATA[技術]]></category><category><![CDATA[實作解析]]></category><dc:creator><![CDATA[AIF EVENT]]></dc:creator><pubDate>Sat, 12 Aug 2023 08:02:08 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/08/chris_1200628.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://staging.edge.aif.tw/content/images/2023/08/chris_1200628.jpg" alt="人類的情緒變化，AI真的能辨識出來，還能分析應用？"><p>其實，目前在文字與圖像的情緒分析技術都已經有不錯的成果，例如可以利用<a href="https://staging.edge.aif.tw/about-cnn/?n=weblink">卷積神經網路 (CNN) </a>技術提取臉部特徵，並利用這些特徵分辨出圖片中的人物表情是笑或難過。而文字部分的辨識技術也同樣發展得十分成熟，無論是利用RNN或是<a href="https://staging.edge.aif.tw/attention-is-all-you-need-dao-du/?n=weblink">Transformer</a>模型，都能有效提取出文字序列的相互關係，藉以進行情感分析。</p><figure class="kg-card kg-image-card"><img src="https://lh4.googleusercontent.com/C77OSJfcL1rlER3HEvmMJ7a7pwbeSUPYlBX_XUFb03xvEWkO55qp_DJMjnnoYQOPw-WCw-SxYeogftgDv3raUqPAjP-4ta7h2aO8Kmre246IIVqPCvL2mFZUKPrySTBG_HY9jB_e3koh66LbR_qmTF4" class="kg-image" alt="人類的情緒變化，AI真的能辨識出來，還能分析應用？"></figure><h3 id="-">圖像情感分類任務中，好的人臉資訊十分重要</h3><p>目前情感辨識的做法可分為圖像與文字兩種方式，建議針對想辨識的對象選擇合適的做法，例如想看到的是臉部表情，就該選擇以圖像處理為主的AI技術；如果是分析語意或文字含義，就會使用自然語言處理。</p><p>在圖像情感分類任務上，取得一個好的人臉資訊十分重要。因為，如果影像模糊或看不出表情，都很有可能影響模型的決策，也不建議放進模型中進行訓練，以免干擾。</p><p>根據圖片量多寡也有不同的模型做法，當圖片量足夠時，建議能建立自己的模型，不僅在模型大小或設計上較有彈性，如果能做出一個只屬於此資料集的模型，在分類上效果也較好。此外，ResNet的skip connection保護措施，也會對自己建立的模型產生出奇不意的效果，建議能搭配使用。</p><p>要注意的是，自己建立模型會需要強大的CNN模型背景，也需要考量到資料搜集的難度。</p><p>如果圖片量不足時，則可以考慮用網路上公開的人臉預訓練模型進行微調，這麼做的好處是不用自己花時間建模型，要準備的資料量也大幅減少。不過，這樣做的模型較沒有彈性，在應用上，以人臉模型VGGFace為例，如果想要將模型放到較小的嵌入式設備，難度也較高。</p><figure class="kg-card kg-image-card"><img src="https://lh6.googleusercontent.com/pjMOs12F4kKp6Kr49TasnJfRqx9eEQHWUZYfcZbMs5TUoOojTE7Bv96D7qhThb48UAVIzThFUH9kNZ6lhbLvIRBvftq7_GpGIJJXtwVeROuCvqwURv0o_MixZlZaE3QxRnX9t6kDpM1cpD3oTaIR_aA" class="kg-image" alt="人類的情緒變化，AI真的能辨識出來，還能分析應用？"></figure><h3 id="--1">大型語言模型的好處</h3><p>在文字的情感分析中，則需要在資料預處理上花點心思，主要是將輸入的文字轉為能讓模型理解意思的Embedding。</p><p>轉換Embedding需要兩個小模組。第一個是Tokenizer，是將一段文字分割成各個小Token，如「I am a boy」會轉換成「I」、「am」、「a」、「boy」，但電腦還是無法理解這些文字，因此，會需要使用BERT等語言模型，將這些Token轉換成Embedding，將這些文字轉成電腦能理解的語言形式。如：「I」變成[1,0,0,0]、「am」變成[0,1,0,0]、「a」轉變成[0,0,1,0]、「boy」則變成[0,0,0,1]。</p><p>當文字處理好後，就能拿公開的大型語言模型微調自己的資料集。為什麼要用大型語言模型來微調呢？主要是這些模型在經過大量的資料訓練後，具有強大的語意理解能力，只要稍微調整就能有不錯表現。</p><p>當然，也可以選擇自己建立一個NLP Model，但要訓練到具備不錯的成效，所需花費的成本非常驚人，所以大多不會考慮從無訓練到有。</p><figure class="kg-card kg-image-card"><img src="https://lh6.googleusercontent.com/20M4X1yPajTaDSsZc9zGohExOZUF7uIXk1VcPagC_SfABT3jlMKQ0m4W9dBS1IaeFOSbOEU4fOv8BMUpu6w4noLrLDqyB7yEw096Yxah5GQaJ3E61daBRgI32WgpqhpldnZx6Ac9eQ-XHb5wk27km3A" class="kg-image" alt="人類的情緒變化，AI真的能辨識出來，還能分析應用？"></figure><h3 id="--2">多模態模型將是未來應用趨勢</h3><p>視覺、聽覺、嗅覺都是一種模態，而多模態就是同時擁有二個以上的模態，當模型能同時接收多個模態的輸入，且做出相對應輸出，就是一個多模態模型，例如日前爆紅的繪圖工具Midjourney。</p><p>而多模態的情感辨識該怎麼做？例如輸入人臉表情及文字含義得到一個更準確的情感分類。主要有幾個步驟，首先是作Representation learning，就是將文字及圖像資料，分別丟進自己的特徵萃取器裡，萃取器的目的是讓模型理解人臉臉部的特徵及文字含義。（圖像以CNN為主，文字就以RNN、 GPT為主）而輸出就是一串數字向量，如：一張人臉輸入萃取器後，會輸出[13, 16, 2, 1, 5, 100]的數字陣列，而文字萃取也一樣會輸出一段數字陣列，藉以來表達此段文字。</p><figure class="kg-card kg-image-card"><img src="https://lh4.googleusercontent.com/8xISdGlKbOCNBQ-SehZPOn4WJr27Ss-IAh4v9ckm3lTxzpr1xCNtI1DH_fav67fppftQKoX9UpqSvOyDl3biNYocQOCxh650CEoc1uXYlOd2OAvoYGU391Hm3u7DCjHDjQe_WP0OdQAS8aqPOMzFJFE" class="kg-image" alt="人類的情緒變化，AI真的能辨識出來，還能分析應用？"></figure><p>接下來則是Feature fusion，這階段主要整合人臉及文字特徵。主要有兩種做法，分別是Model free以及Model based。Model free就是不使用任何模型，直接合併兩個特徵向量。優點是效率高且沒有其他運算成本，但缺點就是得不到這兩者特徵的上下文關係，很難對應兩者資訊，也可能導致後面的分類器沒辦法有效抓出兩者的pattern。</p><p>而Model based的方法，也是目前常見的方法，就是用一個簡單的類神經網路學習這兩者的特徵pattern，目前常見的做法是用一個簡單1 x 1 卷積，學習兩者之間的representation。但是，這個做法將耗費額外的運算成本。</p><figure class="kg-card kg-image-card"><img src="https://lh5.googleusercontent.com/O-w8_e7OxipfGuoGKFJ1R8kCWroOhHlQdXt6tk6Qieu4lvRRnmvd8cy0KNcUTyGcL8gYeue5e6mAPHx16THWArMDs2hCXzNviO_kEFgenXIiXBVcbGvf6lim2GtZhmVNFj438LavOKOE8Y-YExRXMZM" class="kg-image" alt="人類的情緒變化，AI真的能辨識出來，還能分析應用？"></figure><p>不管是影像或文字，甚至是上述的多模態模型整合，都已具有不錯的效果，開發者可以用自己的資料或目標輸出，作為做法選擇上的判斷依據。而越來越熱門的多模態模型，也會在情感辨識上有更多使用與應用。</p><p>想了解更多文字與圖像的情緒技術，請參考【AI CAFÉ 線上聽】小心被AI「暗算」，情感辨識大解析！</p><figure class="kg-card kg-embed-card"><iframe width="356" height="200" src="https://www.youtube.com/embed/D9ZPm9JQp3Y?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="【AI CAFÉ 線上聽】小心被AI「暗算」，情感辨識大解析！"></iframe></figure>]]></content:encoded></item><item><title><![CDATA[利用Apple神經網路引擎，實作 Image Segmentation]]></title><description><![CDATA[對 AI 工程師來說，Apple 處理器上特別的 16 核心神經網路引擎(Neural Engine)帶來了顯著的速度提升，且在手機端的執行速度也有不錯成效。本次，我們將針對「模糊化背景」的情境進行實地測試任務。]]></description><link>https://staging.edge.aif.tw/application-image-segmentation/</link><guid isPermaLink="false">6500350103e86b00010f482c</guid><category><![CDATA[技術]]></category><category><![CDATA[實作解析]]></category><dc:creator><![CDATA[AIF 技術發展中心]]></dc:creator><pubDate>Mon, 07 Aug 2023 10:58:52 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/08/shutterstock_632027327.jpg" medium="image"/><content:encoded><![CDATA[<h3 id="-">一、前言與任務說明</h3><img src="https://staging.edge.aif.tw/content/images/2023/08/shutterstock_632027327.jpg" alt="利用Apple神經網路引擎，實作 Image Segmentation"><p>前陣子我們曾經分享過Apple公司的16核心神經網路引擎（Neural Engine）在神經網路計算上的精彩表現（可參考：<a href="https://staging.edge.aif.tw/application-pytorch-lightning-coreml/">利用PyTorch Lightning與CoreML實現在Apple神經網路引擎進行加速運算</a>），那麼，利用這個神經網路引擎進行電腦視覺任務的效果是否同樣亮眼呢？</p><p>這次的挑戰是「模糊化背景」下的影像切割任務，也就是當我們參加線上會議，在開啟視訊鏡頭時會選用的模糊化背景，本篇文章就是要與大家分享如何實現這個任務，且只要準備對應的資料就可以針對特定人物客製化。</p><p>本文跟<a href="https://staging.edge.aif.tw/application-pytorch-lightning-coreml/">上一篇文章</a>一樣，以Python調用Neural Engine的方法為主。</p><p>這次所挑戰的影像切割（Image segmentation）任務，也是很常見的電腦視覺任務之一，大多會應用於以下場景：</p><ol><li>醫學影像：在醫學領域，影像分割可用於標記和定位組織、器官或腫瘤。它能幫助醫生更準確地診斷疾病、規劃手術，並監測病情變化。</li><li>自動駕駛：在自動駕駛車輛中，影像分割可以幫助車輛識別和理解路面環境，識別行人、車輛、交通標誌和道路邊界等，以做出更明智的行駛決策。</li><li>地圖製作：影像分割可以應用於地圖製作中，識別並標記建築物、道路、河流等地理要素，以幫助建立高精度的地圖資料。</li><li>工業應用：在工業領域，影像分割可用於檢測製造缺陷、分類產品和監控生產過程，以提高生產效率和品質控制。</li></ol><p><strong>前期準備：</strong></p><p>資料集準備大約2000張，本次實驗使用Nvidia GPU完成模型訓，並以M1 Mac Air 進行 inference，文末附有GitHub連結，爾後範例皆以<a href="https://github.com/GuffreyKu/image-segmentation.git">GitHub內容</a>為主。</p><p>GitHub ： <a href="https://github.com/GuffreyKu/image-segmentation.git">https://github.com/GuffreyKu/image-segmentation.git</a></p><p><strong>本次使用設備：</strong></p><ol><li><a href="https://www.apple.com/tw/mac/compare/">Mac Air  M1</a> : CPU 8 核心、GPU 8 核心、Neural Engine 16 核心、16G RAM</li><li>Desktop : CPU 16核心、 GPU Nvidia 2080 Ti 11G、16G RAM</li></ol><h2 id="--1">二、環境配置</h2><p>開發環境大致與<a href="https://staging.edge.aif.tw/application-pytorch-lightning-coreml/">這篇文章</a>相同，需要安裝Homebrew、Miniforge、Conda、Pytorch、coremltools、pandas、<a href="https://imgaug.readthedocs.io/en/latest/source/installation.html#installation-in-anaconda">imgaug</a>、<a href="https://pypi.org/project/torch-optimizer/">torch-optimizer</a>。（註：此任務新增加 imgaug 與 torch-optimizer 套件）</p><ol><li>imgaug : 用於資料集增強。</li><li>torch-optimizer : 有收入比較近期新的 optimizer 演算法。</li></ol><h2 id="--2">三、資料集準備與說明</h2><p>本次使用的資料集一共有2667張圖片，圖片標籤分為「主體」+「背景」，如下圖一所示，白色部分是「主體」，黑色部分為「背景」，模型會利用這個資料集辨別出主體與背景各自是哪些區塊，並針對背景進行模糊化以完成此任務。（註：資料集來源請參考：<a href="https://www.kaggle.com/datasets/tapakah68/supervisely-filtered-segmentation-person-dataset">https://www.kaggle.com/datasets/tapakah68/supervisely-filtered-segmentation-person-dataset</a>）</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://staging.edge.aif.tw/content/images/2023/08/Untitled--1-.png" class="kg-image" alt="利用Apple神經網路引擎，實作 Image Segmentation"><figcaption>圖一：白色部分是「主體」，黑色部分為「背景」。（圖片來源：DATA ● MARKET,網址：https://trainingdata.pro/data-market?utm_source=kaggle）</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://staging.edge.aif.tw/content/images/2023/08/Untitled--2-.png" class="kg-image" alt="利用Apple神經網路引擎，實作 Image Segmentation"><figcaption>圖二：資料集圖片（圖片來源：DATA ● MARKET,網址：https://trainingdata.pro/data-market?utm_source=kaggle）</figcaption></figure><h2 id="--3">四、訓練流程</h2><p><strong>1.Data preprocessing</strong></p><p>因為本次使用網路上的公開資料集，所以必須做一些下述的檢查和資料閱讀，包括圖片數量、長寬比分佈，以大致了解資料的樣貌。</p><ul><li>需確認每張圖片皆可以開啟。</li><li>需確認輸入圖片與label數量一致。</li><li>對所有輸入圖片長寬取均值，用於後續訓練圖片縮放尺寸。</li><li>切分訓練集與驗證集，並將圖片路徑儲存為CSV。</li></ul><p>詳細操作可以參考 “ train_python/datasets/data_prep.ipynb ”</p><p><strong>2.</strong> <strong>PyTorch Dataset</strong></p><p>透過Pytorch Dataset收集與讀取圖片資料，且定義每次訓練時，所輸入的資料與標籤樣貌，包含輸入資料的尺寸與資料增強方法。</p><p>首先，讀取在Data preprocessing階段產生的CSV檔。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
    <script src="https://gist.github.com/hany1307/c15a3d85f4c50464277370f94d963f1d.js"></script></div><!--kg-card-end: html--><p>接著，圖片使用OpenCV 讀取，圖片通道是BGR轉換至RGB，進行Resize。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
    <script src="https://gist.github.com/hany1307/ce33461e947d04ec38b0fee4d640049b.js"></script>
</div><!--kg-card-end: html--><p>在 ImgAugTransform() 中完成資料增強，一共有5種增強方式（亮暗度、模糊、左右反轉、旋轉、位移），特別要注意這次任務是 Image segmentation，它的輸出與輸入大小相同的，label當中某些位置是屬於主體，所以當資料增強使用到像素點位移，如上下反轉、左右反轉、旋轉、位移，label時，皆需同步位移，而這次使用的套件是imgaug，並支援同步移動。</p><blockquote>註：這裡使用 Random 的方式每次隨機取一種資料增強方法</blockquote><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/6cdffdcdb04252ad92f73041e924f9ed.js"></script>
</div><!--kg-card-end: html--><p><strong>3. PyTorch Training Flow</strong></p><p>透過PyTorch data loader讀取上一步驟所產生的PyTorch dataset，以進行模型訓練，因此，這一步需要明確定義使用了哪些模型，以及一些訓練技巧。（註：Transfer learning model請參考：classical_seg.py）</p><p>這次的實作我們選用兩個PyTorch官方有提供的模型架構，如下：</p><ol><li>deeplabv3_mobilenet_v3_larg</li><li>lraspp_mobilenet_v3_large</li></ol><p>（註：PyTorch官方模型介紹 : <a href="https://pytorch.org/vision/stable/models.html">https://pytorch.org/vision/stable/models.html</a>）</p><p>以下說明不同模型架構的訓練方式：</p><p>（1）deeplabv3_mobilenet_v3_larg</p><p>Google 提出的 Deeplab v3 是在影像切割任務當中表現非常好的模型結構，其中模型backbone使用Mobilenet是因為想要在mac上能有比較快的運算速度，如果不在意運算速度可以選用效果最好的 Resnet101。</p><p>因為官方模型使用的COCO_WITH_VOC_LABELS_V1資料集做訓練，輸出層類別數與此次任務不同，所以需要在這個模型最後一層進行修改，同時 deeplabv3 有auxiliary classifier 的功能在這裡的輸出層也需要修改。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/a30917e70987d9d59d12082978e731ce.js"></script>
</div><!--kg-card-end: html--><p>（2）lraspp_mobilenet_v3_large</p><p>Google 提出Lite Reduced Atrous Spatial Pyramid Pooling (LRASPP) 針對Mobilenet v3的激勵函數與解碼器結構進行改良且加入Network architecture search 優化整體模型結構，使得運算速度與準確度皆有所提升。</p><p>同理Deeplabv3，官方模型使用的COCO_WITH_VOC_LABELS_V1資料集做訓練，輸出層類別數與此次任務不同，所以需要在這個模型最後一層進行修改，lraspp在計算分類的類別時有分粗類別與細類別，可以輔助模型訓練，但這次任務沒有這樣的標注方式，所以在模型設計統一修改成兩類。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/008bd93c9ec62aaf01fb22ef77512efd.js"></script>
</div><!--kg-card-end: html--><p>Automatic mixed precision（自動混合精度計算）（編按：Nvidia 顯示卡才有支援此功能，位置請參考：trainer.py）。</p><ul><li>模型運算時可以混合FP16、FP32 兩種精度，主要減少訓練時記憶體的使用量，且加速計算。</li><li>使用pytorch 內建函式，在訓練過程，模型計算、Loss 數值與梯度更新需要特別修改。</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/2d0cbed6811c0e5796d1d6a5b304fe51.js"></script></div><!--kg-card-end: html--><p><strong>4.Trace Torch Model(trainer.py)</strong></p><ul><li>將模型做靜態轉換，方便後續應用於其他工具與其他平台中。</li><li>需要注意在做轉換的時候需要輸入與之後應用相同大小的Torch Tensor，此 Torch Tensor也需要符合模型輸入尺寸。</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/9fe690bcfaf0b3752563dd626d0a1a9e.js"></script></div><!--kg-card-end: html--><h2 id="-pt2ct-py-">五、模型轉換(pt2ct.py)</h2><p>為了使用CoreML 必須須將Torch model 轉換至CoreML model。</p><ul><li>給定模型輸入尺寸，定義輸入名稱與輸出名稱。</li><li>因為訓練過程使用CUDA訓練，如果在沒有CUDA環境下需要載入模型，像是Mac環境，載入模型需要先以CPU載入(<em>map_location</em>='cpu')。</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/0cc2c1534972e917c75000c488499124.js"></script></div><!--kg-card-end: html--><ul><li>設定模型計算精度為FP16(<em>compute_precision</em>)。</li><li>設定計算單元，必須為ct.<em>ComputeUnit</em>.ALL才能調用神經網路引擎（Neural Engine）。</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/2155aad4b3f4f2b38f2042577f336f9e.js"></script></div><!--kg-card-end: html--><h2 id="-inference-on-mac-with-python-coreml-inference_ane-py-">六、inference on Mac with python CoreML(inference_ane.py)</h2><p>使用CoreML就可以調用神經網路引擎（Neural Engine）來做加速運算。以下說明步驟：</p><p><strong>1.使用CoreML載入模型</strong></p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/672583e1b570ff514e2f2ad83180760d.js"></script></div><!--kg-card-end: html--><p><strong>2.Decode Segmentation to RGB函式</strong></p><p>a.本次任務共有兩類，0 : 背景, 1 : 人，這邊預設將RGB三通道給全「0」與 全「1」，方便後續做影像乘積直接過濾人出來。</p><p>b.可以自定義輸入RGB數值，用於過濾背景與過濾人，方便等等計算可以模糊化背景。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/5539c382e64f35d5dd8787b1ea501177.js"></script></div><!--kg-card-end: html--><p><strong>3.OpenCV 開啟攝影機</strong></p><p>a.使用OpenCV videoCapture開啟鏡頭，且輸入編號來選取鏡頭裝置，以我的設備為例：編號0 : 筆電鏡頭；編號 1 : 手機鏡頭。（編按：我的環境編號與下面C++的相反，需要注意）。</p><p>建議搭配檢查：1. 編號設備是否能成功讀取，2. 是否成功讀取影像。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/7da131f05298971bef879caa88ba72f9.js"></script></div><!--kg-card-end: html--><p>b.使用兩個變數分別儲存兩個影像，原影像與模糊化後的影像，以方便後面應用。</p><p>cv2.GaussianBlur 為模糊化方法，其中 第二個參數 (55, 55) 必須為奇數，數字大小決定模糊化程度，第三個參數為0，主要是給GaussianBlur數學計算公式的參數，在常規操作下，設定0 即可。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/a962b0a25399d77fa56b31b83b5b0412.js"></script></div><!--kg-card-end: html--><p><strong>4.串流影像進行預測</strong></p><ul><li>將videoCapture影像進行Resize成模型輸入尺寸。</li><li>OpenCV Resize function是先 (w, h)</li><li>OpenCV彩色影像通道排列是BGR，要轉換至RGB</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/72ae836e76437ec694f2eecdc4d0021d.js"></script></div><!--kg-card-end: html--><ul><li>將OpenCV matrix轉換至NumPy matrix，並使用 np.transpose() 將 channel 往前移動。</li><li>Torch 為 channel first</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/57e818a15fd323ef1658b0b7a012a4e0.js"></script></div><!--kg-card-end: html--><ul><li>模型計算，輸入參數是以字典形式，key : 第五節模型轉換時定義的輸入名稱，value: numpy matrix。</li><li>需要新增一個維度在NumPy matrix的第一維度，告訴模型有幾筆資料需要做計算。</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/e3448e0cea80162130b5c372daee5ac3.js"></script></div><!--kg-card-end: html--><ul><li>模型輸出為字典形式，key : 第五節模型轉換時定義的輸出名稱，value: numpy matrix。</li><li>需要argmax()取出類別，squeeze()縮減不必要的維度。</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/fa002a4df70ba064042cc5bfc75025d4.js"></script></div><!--kg-card-end: html--><ul><li>將預測結果輸入至Decode Segmentation to RGB函式</li></ul><p>Decode Segmentation to RGB函式會使用兩次，分別過濾 「人」與 「背景」</p><p>人的輸出乘以上述步驟中的「原影像」，背景的輸出乘以上面步驟的「模糊化後的影像」，最後結果從RGB轉換為BGR，並將結果輸出。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/63a0dd0e411efc3146ced3f1507c483d.js"></script></div><!--kg-card-end: html--><h2 id="-inference-on-mac-with-c-inference_cpp-">七、inference on Mac  with C++ (inference_cpp/)</h2><p><strong>1.環境建置</strong></p><ul><li>Libtorch<br>brew install libtorch</li><li>Opencv<br>brew install opencv</li></ul><p><strong>2.CMakeLists</strong></p><ul><li>c++ 編譯環境設定</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/5e4a46476a3b7762daf7ee957a5944c5.js"></script></div><!--kg-card-end: html--><ul><li>函式庫路徑設定</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/efe7a2f5753c21262acc8ce4ffee0da7.js"></script></div><!--kg-card-end: html--><ul><li>程式碼路徑設定（將所有有使用到的函式進行link）</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/2319f9e860694850d76313c8a13443dc.js"></script></div><!--kg-card-end: html--><p>建議還是使用PyTorch作為C++ Torch的編譯工具，經實測 Libtorch 執行速度較慢，若想看到更多網友們的討論請至：<a href="https://github.com/pytorch/pytorch/issues/19106">https://github.com/pytorch/pytorch/issues/19106</a> ，網友提供的<a href="https://zhuanlan.zhihu.com/p/363319763">解決方法</a>。</p><p>同時，在CMake需增加一個參數，路徑指定到Python環境的PyTorch資料夾：</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/064739deba3806ab00c5b1c80e7212bd.js"></script></div><!--kg-card-end: html--><p><strong>1.main.cpp</strong></p><ul><li>Color Map</li></ul><p>本次任務共有兩類，0 : 背景, 1 : 人，這邊將 RGB 三通道給 全 0 與 全 1，方便後續做影像乘積直接過濾人出來。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/1dd3138cd4e25b299c3f8b3c23f77688.js"></script></div><!--kg-card-end: html--><p><strong>2.Decode Segmentation to RGB函式</strong></p><p>a.產生一個與 Segmentation output 相同大小的且RGB皆為0的 OpenCV matrix</p><p>b.以迴圈依序將Segmentation output的類別值取出，且從color map中取出value填回上一步建立的OpenCV matrix</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/e773585a016cd4221c7af5702fe4dc5f.js"></script></div><!--kg-card-end: html--><p><strong>3.OpenCV開啟攝影機</strong></p><p>a.使用OpenCV videoCapture開啟鏡頭，且輸入編號來選取鏡頭裝置，以我的設備為例：編號 0 : 筆電鏡頭，編號 1 :手機鏡頭。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/8b2fb779fd304f79ef5ef320bcf9b091.js"></script></div><!--kg-card-end: html--><p>b.讀取videoCapture的影像(以參照的方式取得影像)</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/40abd0bce7218bbd73b127978c670026.js"></script></div><!--kg-card-end: html--><p>c.建議搭配檢查，1. 編號設備是否能成功讀取，2. 是否成功讀取影像。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;"><script src="https://gist.github.com/hany1307/a7f910a954a5bcdbad21c066f4bd932d.js"></script></div><!--kg-card-end: html--><p>d.載入模型，以下將依序（i、ii、iii）說明步驟：</p><p>i.使用Libtorch中的jit load來載入模型，需注意模型會在訓練階段以ScriptModule儲存。</p><ul><li>因為訓練階段是以CUDA 做訓練，在Mac中需要先以CPU讀取(torch::kCPU)。</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/fa76477affe0680d5cb79874254e5333.js"></script><!--kg-card-end: html--><p>ii.將模型移至GPU (torch::kMPS)。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/5b2465b90245161d5f0d35b1c1328097.js"></script><!--kg-card-end: html--><p>iii.建議搭配檢查，模型是否有成功載入。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/b68c08a2bfbf52448c6d8b7e87f57db6.js"></script><!--kg-card-end: html--><p>e.串流影像轉Torch Tensor並進行預測，以下將依序（i、ii、iii）說明步驟：</p><p>i.將videoCapture影像進行Resize成模型輸入尺寸。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/83e81db701c072b372700278f33d3717.js"></script><!--kg-card-end: html--><p>ii.將OpenCV matrix轉換至Torch Tensor，最後使用permute將channel往前移動。</p><ul><li>因為轉換目標是OpenCV matrix這邊維度為 { h, w, 3 }</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/ec3211ad1aa309f90b19b8b5f31c7fa7.js"></script><!--kg-card-end: html--><p>iii.進行模型預測。</p><ul><li>再新增一個維度</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/868ebbdf5c509f5ad393a02aeff1c452.js"></script><!--kg-card-end: html--><ul><li>Torch tensor 轉 FP32，移至 GPU，Normalization( 除 255)</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/536b944b3fcc092d694bed9717a7f764.js"></script><!--kg-card-end: html--><ul><li>進行預測</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/083ba6c75b67a296bac744f0ab0abbb0.js"></script><!--kg-card-end: html--><p>iv.可以在預測時加入時間，計算模型運算耗時。</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/728ec7c520e93050d2e3c47b581ab50d.js"></script><!--kg-card-end: html--><p>f.將預測結果輸出</p><ul><li>將Segmentation output進行argmax()</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/2fb1c5c51492212b4e4b2fcab87aa4b3.js"></script><!--kg-card-end: html--><ul><li>將output tensor轉換至OpenCV matrix</li></ul><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/4bdf9b9fd62a5eb17a298d2c0ca0e565.js"></script><!--kg-card-end: html--><ul><li>轉換後輸入至 Decode Segmentation to RGB 函式，並輸出結果</li></ul><p>（編按：這邊將原始影像與decode Segmentation output 相乘並保留人像）</p><!--kg-card-begin: html--><div style="width: 700px;max-width: 100%;">
<script src="https://gist.github.com/hany1307/968e3031204896047d5d9b32c22a18de.js"></script><!--kg-card-end: html--><h2 id="--4">八、結論</h2><p>這次文章分享如何使用 Core ML 加速運算以及C++ inference程式撰寫，這裡分享Python、Core ML 與C++ 三者模型計算的速度的差異：</p><p>模型計算的速度涵蓋以下流程，cpu input tensor → gpu input tensor → gpu compute → gpu output tensor → cpu output tensor。</p><p>Python  GPU : 0.290 s<br>Core ML Neural Engine : 0.147 s<br>C++ GPU : 0.198 s</p><p>從結果發現，使用Core ML且使用神經網路引擎（Neural Engine），約能加速2倍。但是，這次會特別分享C++的主要原因是，在實際場域中，為了追求程式的穩定性，大多會採用C++為主要開發，但從這次結果來看， C++ GPU所帶來的提升幅度並不如預期得好，如果要實現最好的計算速度，勢必得使用C++ Neural Engine 來達到，相關資料可以提供參考，<a href="https://krisp.ai/blog/how-to-integrate-coreml-models-into-c-c-codebase/"><strong><strong>How to Integrate Core</strong> <strong>ML Models Into C/C++ Codebase</strong></strong></a>。</p><p></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://staging.edge.aif.tw/content/images/2023/08/ezgif.com-optimize.gif" class="kg-image" alt="利用Apple神經網路引擎，實作 Image Segmentation"><figcaption>實際測試情況</figcaption></figure><!--kg-card-begin: html--><p>
（撰稿工程師：<a href="https://aif.tw/teams/introduce/guffrey-gu.html" target="_blank">顧祥龍
</a>）
        </p><!--kg-card-end: html--></div></div></div></div></div></div></div></div></div></div></div></div>]]></content:encoded></item><item><title><![CDATA[數據多少才夠？兩大建議完善數據資產]]></title><description><![CDATA[在各種演講及諮詢場合，我常遇到這樣的問題：「（數位轉型）到底需要多少數據才算夠？」這個問題超級深奧，幾乎就等於人們總想知道「要存多少錢才能退休」一樣。很多人被問到這個問題，只能泛泛回答，「當然是越多越好」，或者奸笑著回答，「每家公司的需求都不一樣，你還是找我到你公司看看吧。」 ]]></description><link>https://staging.edge.aif.tw/eric-huang-column-data-assets/</link><guid isPermaLink="false">6500350103e86b00010f482f</guid><category><![CDATA[大話智慧製造]]></category><category><![CDATA[觀點]]></category><dc:creator><![CDATA[黃逸華]]></dc:creator><pubDate>Sat, 05 Aug 2023 08:01:16 GMT</pubDate><media:content url="https://staging.edge.aif.tw/content/images/2023/08/Shutterstock_2087797885.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://staging.edge.aif.tw/content/images/2023/08/Shutterstock_2087797885.jpg" alt="數據多少才夠？兩大建議完善數據資產"><p>這個問題之所以難以回答，是因為大家都問錯了方向。</p><p>最原始的誤解來自於人們習慣從硬體思維出發，以為多了一個神奇的工具就可以解決很多過去難以處理的問題。然而，數位轉型或導入 AI 從來不是敲下一個神奇密碼，或是董事長摸摸頭、打打雞血，就能夠完成的事情。大部分數位轉型計劃失敗的原因，在於一開始的問題就定義模糊不清，當然搞不清楚需要多少資源，更是難以把握方向與結果。</p><p>大家都聽過，要改革只能進行數位轉型，就要先準備大量數據。話說到此，想做的人就被嚇到，輾轉反側，始終拿不定主意到底要不要進行，畢竟看起來很貴；不想做的人心中暗笑，「正好，反正沒有數據不能怪我了。」不管真正的想法如何，人人都想知道到底需要多少數據，真實目的就是為自己的論點找證據。</p><p>答案說破，一點都不複雜。需要多少數據，完全取決於所設定的目的是什麼。</p><p>Gartner 對數位轉型的定義是「企業在企業活動中嵌入技術，以推動根本性變革的過程。」，而 AI 是其中最受關注但也是最需要資源投入的技術。無論如何，數位轉型從來不會是大張旗鼓、一次就能完成所有的任務；反倒是目的越明確，邊界越清晰，任務越可能實現，對數據的需求也會自然浮現。</p><p>以具體企業場景而言，企業建立數據資產所需數據量，要根據企業特定的業務目標來確定。不同的業務目標需要不同規模和類型的數據集。如果目標是建立商品推薦系統，需要收集大量顧客行為數據和商品數據；如果目標是優化倉庫管理，則需要收集倉庫存量、入庫出庫等數據。</p><p>「可是我就是沒有數據，怎麼辦？」長靴貓眨巴著明亮眼睛可憐兮兮說道。</p><p>「其實，數據已經在手上了，」大師低眉斂目說道。</p><p>對於初期數據量不足的企業，可以參考以下兩項建議逐步完善數據資產：</p><p>一是充分利用現有數據，通過數據清洗、組合等方式拓展現有數據集。例如將歷史數據與新數據進行組合，形成更大的訓練集。</p><p>二是根據業務目標定位，補充特定類型的新數據。這需要企業明確數據需求，並與業務目標緊密相連。</p><p>總體而言，企業建立數據資產的關鍵在於，根據企業業務定位和發展目標來構築清晰的數據戰略，確定所需數據類型、數據品質標準以及收集方式。具備明確數據戰略，才能高效建立企業數據資產。</p><p>隨著企業業務發展，數據資產也要持續擴充和優化。企業可以建立數據收集與處理流程，即時追蹤新的數據來源，並根據變化調整數據戰略。只有做到數據資產和業務同步發展，才能充分發揮數據資產價值，實現企業智能化。</p><p>再分享一個連許多顧問都不清楚的概念：「標籤」是 AI 技術中一個很重要的概念，活用標籤，也可以讓企業數據資產瞬間倍增。「標籤」為每筆數據添加元數據，標示其業務意義和屬性特徵。良好的數據標籤可以明確數據內在價值，提升數據可分析性。而企業在建立數據資產的同時，也可以同時考慮為數據賦予不同解析度的標籤，透過標籤與數據集的選擇，讓數據資產可以創造出更多價值。</p><p>這就像是 AI 技術中的一個關鍵，可以讓企業數據資產瞬間倍增。透過為每筆數據添加元數據，標示其業務意義和屬性特徵，可以提升數據可分析性，並創造更多價值。而在企業建立數據資產的同時，也可以考慮為數據賦予不同解析度的標籤，透過標籤與數據集的選擇，讓數據資產能夠創造出更多價值。</p><p>數位轉型及 AI 導入並非單純追求數據量的增加，而是在確定明確的目標和邊界後，有目的性地收集、處理和利用數據。企業在建立數據資產時，需明確業務目標，構建清晰的數據戰略，並持續調整以適應業務發展。透過 AI 技術中的 「標籤」，可以增強數據的價值和分析性，進而實現企業的智能化轉型。數位轉型和 AI 技術為企業帶來了無限可能，然而成功的關鍵在於深思熟慮的策略和有效的數據應用。唯有如此，企業才能在激烈的市場競爭中脫穎而出，實現長期穩健的發展。</p>]]></content:encoded></item></channel></rss>