發表文章

馬可夫鏈(markov chain)應用於文本段落、句子生成,讓敘述更豐富化的可行性研究_part1.

圖片
  至今多數創作文本生成主題圍繞透過類似GPT或Gemini等LLM來介接API。 使用現成的訓練模型,來實作聊天機器人或文章生成。 即使沒有自然語言處理的專業知識也能實作上述功能, 然而 演算法本身會屬於黑盒狀態,並且可解釋性較弱甚至有幻覺的風險。 此外若要自行構建新的訓練模型,就需要理解這些文章生成的演算法。 在短文、文章段落、句子生成等NLP演算法中,馬可夫鏈(markov chain)絕對是一個經典的算法。 比方有一句話 “I like turtles. I like rabbits. I don't like snails.” 套用於馬可夫鏈呈現如下圖 https://www.awalsh128.com/text-generation-using-markov-chains/ 上述連鎖表示,在這些句子中 100%(1.0)將以 I 開頭。 接著會是 like 的機率約 66%(0.66),而 don't 的機率約 33%(0.33)。 單字 don't 之後總是(100%/1.0)接著 like。 最後,烏龜、兔子和蝸牛會各自有大約 33%(0.33)的機率被接在後面。 馬可夫鏈的優點在於它們能在不具備語言語法或語意知識的情況下形成詞的相依關係。 該鏈純粹根據從語料庫中抽取的統計資訊來建立。 因此符合領域知識的語料庫其豐富與多元程度建置,會是豐富化敘述的關鍵。 也許於Image Caption應用中可以再疊加「語意分割(ADE20K資料集現成的模型)」區分出各區域物件單詞,再搭配WordNet做文字馬可夫鏈改善敘述單薄問題也說不定。 馬可夫鏈是一種統計模型,可用於監督式和非監督式學習。 當我們使用馬可夫鏈進行監督式學習時,代表可能要進行文本分類。 而應用在文本生成時,就屬於非監督式學習任務的統計模型,使用它通過預測不同狀態的轉移概率來生成文本。 於文本生成任務中,主要先探討一階馬可夫模型(First Order Markov Model) 一階馬可夫模型的核心在於: 下一個狀態的出現機率僅受當前狀態影響 。只要掌握了現在,所有的過去資訊對於預測未來都不再具有額外的參考價值。在文本生成情境,馬可夫模型中的狀態就代表這些詞或文本中存在的標記。 Ref: Can AI write my essay for me?(markov chain...

Image Caption可應用的不同生活情境_論文研究Idea與可利用的公開資料集探討_車損拍照產生理賠報告/室內照產生房屋描述(裝修前後驗收、格局敘述)/食譜逆向工程

圖片
Image Caption可應用的不同生活情境,其實除了在盲人輔助生活以外應用,根據文獻回顧可以發掘只要工作模式涉及這類既定模式「拍照後有需要寫報告」,基本上都還滿容易能夠被應用的。 而研究過程中最麻煩也是讓人擔憂的問題就在於資料來源易取得性,此外對於IRB的問題有點困難,加上無醫學背景就不探討醫療報告生成這部分資料集應用範疇。 1.汽車損傷拍照到快速理賠,產生車損理賠報告。 應用自動車輛損傷檢測與在汽車保險業引起了極大的關注。 Vehicle Damage Detection Using Artificial Intelligence: A Systematic Literature Review https://wires.onlinelibrary.wiley.com/doi/10.1002/widm.70027 CarDD: A New Dataset for Vision-based Car Damage Detection https://cardd-ustc.github.io/ https://github.com/harpreetsahota204/car_dd_dataset_workshop CarDD 包含 4,000 張高解析度的車輛損傷影像,具有超過 9,000 個經良好註記的六類損傷實例(範例如圖 1 所示),但預設該資料集並沒有對應理賠或車損文字描述,因此對應文字敘述的前置準備是大工程。 https://cardd-ustc.github.io/docs/CarDD.pdf Coco Car Damage Detection Dataset https://www.kaggle.com/datasets/lplenka/coco-car-damage-detection-dataset 根據過往研究論文主要會和特定保險公司合作,並且理賠內容都比較沒對外公開。在Kaggle上有人曾利用BLIP 模型為 CarDD 資料集生成了對應的 Captions,並以 COCO 格式標註。這直接解決了 CarDD 缺乏文字描述的問題。 Blip for Captioning Car Damage https://www.kaggle.com/datasets/gabrielfcarvalho/blip-for-captioning-car-dama...

[論文筆記]ROUGE: A Package for Automatic Evaluation of Summaries

圖片
年份:2004年 論文連結: https://aclanthology.org/W04-1013/ 研究問題 ROUGE 是 Recall-Oriented Understudy for Gisting Evaluation 的縮寫。 它包含一系列衡量方法,可透過將自動產生的摘要與人類撰寫的理想摘要進行比較,來自動判定摘要的品質。這些衡量方法會計算自動摘要與人類理想摘要之間重疊單位的數量,它包含數種自動評估方法,用以 衡量摘要之間的相似性 。例如 n-gram、詞序列和詞對。 他前身參照了2003年Chin-Yew Lin 和Eduard Hovy兩位學者們的論文研究來改善,提出該新指標。 「Automatic Evaluation of Summaries Using N-gram Co-Occurrence Statistics」 https://aclanthology.org/N03-1020.pdf 論文中,學者們提出了所謂 ROUGE方法,用於摘要的自動評估及其評估結果。 ROUGE 為 Recall-Oriented Understudy for Gisting Evaluation( 偏重召回率 的摘要評估替代方法)之縮寫。它包含數種自動評估方法,用以衡量摘要之間的相似性。 在論文分別介紹共4種方法 ROUGE-N(在第 2 節說明)、ROUGE-L(在第 3 節說明)、ROUGE-W(在第 4 節說明)、 ROUGE-S(在第 5 節說明) 第 6 節展示這些指標如何與使用 DUC 2001、2002 及 2003 資料的人類評分相關聯。 第 7 節總結本文並討論未來方向。 研究背景 傳統上 對摘要評估涉及人類對不同品質指標的判斷 ,例如連貫性、簡潔性、語法性、可讀性與內容(Mani, 2001)。 然而,即使像文件理解會議(DUC)(Over and Yen, 2003)中那樣,僅就少數語言品質問題與內容涵蓋度對大量摘要進行簡單的人工評估,也需要超過 3,000 小時的人力。 這非常昂貴且難以頻繁進行。因此,如何自動評估摘要在近年來引起了摘要研究社群的高度關注。 1.ROUGE-N: N-gram Co-Occurrence Statistics(N 元語法共現統計) 將模型生成的結果(候選摘要)和標準結果(參考摘要)按 N-gram 拆分後,計...

Tensorflow1.x跟2.x版本透過anaconda去跑各自不同執行環境

圖片
  TensorFlow 是為了能輕鬆實現深度學習與機器學習演算法而開發的函式庫。因此,在任何可以使用機器學習、深度學習的領域,都可以使用 TensorFlow。深度學習演算法的優點在於其通用性,能廣泛應用於多種不同領域。 雖然僅使用 TensorFlow 函式庫也能編寫深度學習程式碼,但為了能更輕鬆地實現深度學習演算法,存在許多將 TensorFlow 函式庫進階抽象化 Abstraction 的多樣化高階 High-Level 函式庫。利用這些函式庫,可以比直接使用 TensorFlow 以更簡潔的程式碼實現深度學習演算法。 Keras 這是由 François Chollet 建立的深度學習抽象化函式庫。除了 TensorFlow 之外,還支援 CNTK、Theano、MXNet 等其他深度學習函式庫。 Keras 是深度學習抽象化函式庫中擁有最多使用者群體的。憑藉這種人氣,Google 將 Keras 的創始人 François Chollet 招募進公司,並將 Keras 合併到 TensorFlow 的主程式碼庫中。因此,可以混合使用 TensorFlow 函式庫與 Keras 函式庫來編寫程式碼。 Tensorflow1.x conda create -n tf1 python=3.7 -y conda activate tf1 pip install --upgrade pip pip install tensorflow==1.15.5 pip install "protobuf<3.20" python -m pip install notebook ipykernel python -m ipykernel install --user --name tf1 --display-name "Python (tf1)" jupyter notebook --notebook-dir="E:\PyProjects\TF1_Project" pip install tensorflow-gpu==1.15 如果想要安裝 GPU 版本,早期教學影片、文件會跟你說必須先安裝 CUDA 和 cuDNN*,然後可以使用以下指令安裝 TensorFlow GPU 版本: pip install ...

從影像辨識進展到影像理解_PART2.使用卷積運算的特徵提取

圖片
  從使用微分的邊緣特徵量(edge-based feature)提取開始。 邊緣特徵量是表示影像中亮度變化較大部分的特徵量,常用於物體的輪廓提取。 座標(x, y)的亮度變化量可以透過對(x, y)的像素值進行微分來表示。 由於影像座標系統是2維的會有兩個x,y變數,這邊底下會改用偏微分的符號 $\partial$ 就代表 partial,來取代單變數微分的萊布尼茲符號 $\frac{d}{dx}$。 若對 x 軸方向進行微分,可得到水平方向的邊緣特徵量 若對 y 軸方向進行微分,則可得到垂直方向的邊緣特徵量。 座標 $(x, y)$ 的垂直方向邊緣特徵量 $E_x(x, y)$ 與水平方向邊緣特徵量 $E_y(x, y)$ 分別取微分的絕對值。 其公式如 [1.1] 與 [1.2] 所示: $$E_x(x, y) = \left| \frac{\partial}{\partial x} I(x, y) \right| \simeq | I(x+1, y) - I(x, y) | \quad [1.1]$$ $$E_y(x, y) = \left| \frac{\partial}{\partial y} I(x, y) \right| \simeq | I(x, y+1) - I(x, y) | \quad [1.2]$$ 其中 $I(\cdot, \cdot)$ 代表指定座標處的像素值。 由於像素值在相鄰像素之間是離散變化的,因此無法精確計算微分,因為連續函數才能做微分,因此只能用差分來做取代,我們使用離散近似。透過這個方法我們可以為每個像素產生一階導數。邊緣位於一階導數取極值的位置。 連續世界的導數公式定義如下 $$ \frac{\partial I}{\partial x}(x, y) = \lim_{h \to 0} \frac{I(x+h, y) - I(x, y)}{h} $$ ​ https://medium.com/@sarcas0705/computer-vision-derivative-over-image-e1020354ddb5 但像素一格一個走,沒有  h → 0。 所以用最常見的 前向差分(在函數的某點,使用該點及下一點的函數值來計算變化率)。 以x為變數對整個I影像函數來做偏維,視y為常數。 $$ \frac{\p...

從影像辨識進展到影像理解_PART1.概況筆記

圖片
  https://www.ibm.com/think/topics/computer-vision 近年來,影像辨識技術正以各種形式支援著人類的生活。 例如:智慧型手機透過臉部辨識進行解鎖;在視訊會議中,為了模糊背景,會使用影像辨識技術將人物與背景分離。 「影像辨識」 是指「利用電腦對影像中的 物體或人物動作、文字等進行分類與識別 」。 近年來影像辨識已進化到能對輸入影像進行物體或行為分類後,進而 生成描述該影像的文字 。這種高階技術有時會與影像辨識區分開來,稱為 「影像理解」 (Image Understanding) 。 雖然影像辨識技術多樣,但並不代表每種技術都完全不同。隨著近年深度學習 (Deep Learning) 的發展,機器學習模型的通用化程度提高,不同的問題往往能用幾乎相同的技術解決。 人類透過感覺器官感知的資訊會轉換為電氣訊號進行處理,並應用於識別。 然而,視覺資訊並非一開始就是以電氣訊號的形式從現實世界傳來,而是光信號。因此,人類要處理視覺資訊,首先需要一個能將光信號轉換為電氣訊號的「感測器」。 http://ftp.healthhonk.com/doctor/lee04.htm 在人體中負責感測器角色的是眼睛。從現實世界進入眼睛的光信號會透過「水晶體」進行對焦,並投影到「視網膜」上。視網膜將投影的光信號轉換為電氣訊號,並輸出至視神經。 https://benevo.pixnet.net/blog/posts/5067409784 電腦內部的訊息交換也是透過電氣訊號進行。因此,電腦要活用視覺資訊,同樣需要感測器,而扮演這個角色的就是相機。 https://www.geeksforgeeks.org/computer-vision/computer-vision/ 在相機中,來自現實的光信號會透過「鏡頭」進行對焦,投影到「感光元件」上。感光元件將投影的光信號轉換為電氣訊號,寫入相機記憶體中或傳輸至外部裝置。 而現今智慧型手機標榜的「1200 萬畫素」這類數值,代表的就是建構成感光元件的受光元件數量。投影到感光元件的光信號會由各個受光元件轉換為電氣訊號,因此元件數量越多,越能將影像轉換為細膩的電氣訊號。 影像辨識的處理流程( 在深度學習出現之前 ) 輸入影像 => 特徵提取(Feature Extraction) =>...

研究所網文經驗參考

顏安孜助理教授 - 論文寫作實戰技巧 https://www.youtube.com/watch?v=5PnahyVhECk 論文寫作的技藝:精準表達、以理服人 https://etds.lib.ntnu.edu.tw/course/detail/33/ 《研究研究論論文》精華篇 https://etds.lib.ntnu.edu.tw/course/detail/4/ 研究所生活全攻略:16個 碩士班常見問題 、深度分析與建議 https://geo1995.com/tips-%EF%BD%8Daster-degree/ 研究生README|怎麼讀Paper https://vocus.cc/article/65f44c89fd89780001663cb3 做研究之十八般武藝 https://www.csie.ntu.edu.tw/~b90057/use/research_how_to.pdf 要不要考研究所-找與報paper篇 https://hackmd.io/@today-is-researchday/rfdb#%E6%80%8E%E9%BA%BC%E7%9C%8B%E8%AB%96%E6%96%87%E8%B7%9F%E5%A0%B1%E8%AB%96%E6%96%87 [轉貼] 做一次好的論文報告 https://www.ptt.cc/bbs/NTHU_NVLab/M.1242219101.A.90E.html 研究生應有的觀念與態度—談我碩博士的求學生涯 https://nurse.cgust.edu.tw/var/file/31/1031/img/323/280941560.pdf 研究生在幹嘛? #第一次報Paper!講到我口好渴呀 https://www.youtube.com/watch?v=JMuGunjNfXM 如何在閱讀研究文獻中保持批判性 https://vocus.cc/article/659eab09fd8978000131b9ad 解析期刊論文:十七個具備批判性思考的提問技巧及範例 https://www.editing.tw/blog/structure/%E8%A7%A3%E6%9E%90%E6%9C%9F%E5%88%8A%E8%AB%96%E6%96%87-%E5%8D%81%E4%B8%83%E5%80%8B%E5%85...

[自然語言]術語筆記_語言模型N-gram(看前N-1個token,來預測下一個詞)、Corpus(語料庫)

圖片
https://books.google.com/ngrams/graph?content=*&year_start=1800&year_end=2022&corpus=zh&smoothing=3 上圖為Google Books的語料庫可發現 的這個字頻率出現最高 Language Model (語言模型) 如果說我們有一個由m個詞組成的序列(也就是一個句子),我們希望計算句子的概率。 根據鍊式規則,可得: p(w₁, w₂, …, wₘ) = p(w₁) * p(w₂ | w₁) * p(w₃ | w₁, w₂) … * p(wₘ | w₁, …, wₘ₋₁) 根據馬可夫鏈假設可得 p(w₁, w₂, …, wₘ) = p(wᵢ | wᵢ₋ₙ₊₁, …, wᵢ₋₁) Corpus/Corpora ( 語料庫 ) 語料庫是一個由真實文字或音訊組成並整理成資料集的結構化文本數據集。是自然語言處理(NLP)系統的基礎。 它可以包含從報紙、小說、食譜、廣播節目到電視節目、電影以及推文等各類內容。 https://botpenguin.com/glossary/corpus N-gram模型(看前N-1個token,來預測下一個詞) 是一種LM(Language Model),語言模型是一個根據機率判別的模型,其輸入是一句話(單詞的有順序性序列),輸出也就是這一句話的機率,也就是這些單詞的聯合機率(joint probability)。 常應用在「錯字修正」、「選字推薦」等。 以n-1個字來做input,預測之後應該output捨麼字。比方4-gram model就會用前3個字來預測第4個字output為何? 比方以Google Books語料庫N-gram推測 滷肉 下一個字機率最大是出現 "飯" N-gram模型定義(等號左側就為句子出現的合理性機率) 當 n=1 時,一個一元模型(Unigram)為,每個單詞出現機率連乘的機率,只看自己: 當 n=2 時,一個二元模型(Bigram)為,前一個單詞條件下再去計算第二個單詞的機率: 當 n=3 時,一個三元模型(Trigram)為,看前2個單詞去預測下一個單詞的機率: N-gram的N愈大愈好嗎? 當N值較大:對字詞的約束性更高,具有更高的辨識力,複雜度較高。 當N值...

[自然語言]術語筆記_詞袋模型BOW(Bag of Words)&詞集模型(Set of Words)

圖片
https://sep.com/blog/a-bag-of-words-levels-of-language/ 詞袋模型BOW(Bag of Words)-One-hot表示法 最早用於提取文本特徵提取手法 將文本直接簡化為一系列集合,不考慮語法和詞序關係,每個詞互相獨立。 該方式也被稱作詞袋模型(Bag of Words,BOW),只是把詞直接裝進袋子中,詞和文本關係就相當於文本是一個袋子。 早期較簡易的模型,對文本中資訊較多丟失。 最早被提出是為了解決文檔分類問題,目前也有應用魚NLP、CV等領域。 具體作法 對料語進行清理,並完成分詞,比方有一句話如下: 大魚吃小魚也吃蝦米,小魚吃蝦米。 對每個詞進行編號,形成字典(順序無關的流水號) {"大魚":1,"吃":2,"小魚":3,"也":4,"蝦米":5} 用0,1代表該詞是否在文本中出現,從而將文本紀錄為一個特徵向量。 大魚吃小魚也吃蝦米 =>[大魚,吃,小魚,也,蝦米] => [1,2,1,1,1]   吃出現兩次 小魚吃蝦米 => [0,1,1,0,1] 詞集模型(Set of Words) 若不考慮詞頻,減少模型複雜度則就稱為Set of Words。 常用在短文本分析。 大魚吃小魚也吃蝦米 =>[大魚,吃,小魚,也,蝦米] => [1,1,1,1,1]   One-hot表示法

[論文筆記]BLEU: a Method for Automatic Evaluation of Machine Translation

圖片
年份:2002年 論文連結:https://aclanthology.org/P02-1040/ 研究問題 本篇論文探討學者們為了解決機器翻譯評估效率,提出了一個快速又低廉並且與語言無關,替代人工評估但又保留人為評估特性、每次運行邊際成本極低的方法與BLEU基準。 BLEU(Bilingual Evaluation Understudy)為一種用於自動評估機器翻譯品質的指標。由IBM研究員2002年所提出。主要根據N-gram匹配,核心思想是透過比較機器生成的翻譯與參考翻譯之間的n-gram(連續n個詞)匹配情況來度量翻譯品質。 BLEU的取值範圍坐落於0~1之間,越靠近1代表機器翻譯品質越好。 研究背景 為了讓機器翻譯技術能進步,更有效率低廉成本的評估方法於早期就屬於一個大問題。 根據更早期學者文獻(Hovy,1999; White and O’Connell, 1994)探討到,對於機器翻譯成效評估面向主要聚焦於翻譯的充分性(adequacy)、忠實度(fidelity)和流暢度(fluency)。 早期人類對於機器翻譯評估,絕大部分都採用人工評估方式。此類方式需要耗費數週甚至數月才能完成,時間成本極高也無法將人力重複疊代。 不利於研發「每天改模型就要回歸測」的需求。 如何衡量翻譯表現?學者們認為只要翻譯越接近專業的人類翻譯,就越好。為了評估機器翻譯品質,人們通常根據數值化度量標準,衡量其與一或多位人類參考翻譯接近程度。 因此學者們的機器翻譯評估系統主要涵蓋兩個要素 1.一個數值化的翻譯接近度度量指標 2.一個高品質的人類參考翻譯語料庫 通常給定一個原文句子,一定會有不只一句翻譯。這些翻譯在用詞或詞序上仍可能有所不同,就算用同樣詞彙。 比方以下翻譯範例,共有兩種候選翻譯句子。雖然看似表達語意差不多,但品質卻大相逕庭。 Candidate 1: It is a guide to action which ensures that the military always obeys the commands of the party.(這是一份行動指南,確保軍隊始終服從黨的指令。) Candidate 2: It is to insure the troops forever hearing the activity guidebook that party...