主頁 >  其他 > 由淺入深了解機器學習和GPT原理

由淺入深了解機器學習和GPT原理

2023-06-16 08:37:47 其他

目前看到的最通俗易懂、由淺入深的圖解機器學習和GPT原理的系列文章,這是第一篇,由我和 GPT-4共同翻譯完成,分享給大家,

我不是一個機器學習專家,本來是一名軟體工程師,與人工智能的互動很少,我一直渴望深入了解機器學習,但一直沒有找到適合自己的入門方式,這就是為什么,當谷歌在2015年11月開源TensorFlow時,我非常興奮,知道是時候開始學習之旅了,不想過于夸張,但對我來說,這就像是普羅米修斯從機器學習的奧林匹斯山上將火種贈予人類,在我腦海中,整個大資料領域,以及像Hadoop這樣的技術,都得到了極大的加速,當谷歌研究人員發布他們的Map Reduce論文時,這一次不僅是論文,而是實際的軟體,是他們在多年的發展之后所使用的內部工具,

因此,我開始學習機器學習基礎知識,發現初學者需要更通俗易懂的資源,這是我嘗試提供的,

從這里開始

讓我們從一個簡單的例子開始,假設你正在幫助一個想買房子的朋友,她被報價40萬美元購買一個2000平方英尺(185平方米)的房子,這個價格合適嗎?在沒有參照物的情況下,這很難判斷,所以你詢問了在同一個社區購買過房子的朋友們,最后得到了三個資料點:

面積(平方英尺)(x) 價格(y)

2,104                            399,900

1,600                            329,900

2,400                            369,000

就我個人而言,我的第一反應是計算每平方英尺的平均價格,這個價格是每平方英尺180美元,

歡迎來到你的第一個神經網路!雖然它還沒有達到Siri的水平,但現在你已經了解了基本的構建模塊,它看起來是這樣的:

圖片

這樣的圖表展示了網路的結構以及如何計算預測,計算從左側的輸入節點開始,輸入值向右流動,它乘以權重,結果就成為我們的輸出,將2,000平方英尺乘以180,我們得到360,000美元,在這個層面上,計算預測就是簡單的乘法,但在此之前,我們需要考慮我們將要乘以的權重,這里我們從平均值開始,稍后我們將研究更好的演算法,以便在獲得更多輸入和更復雜模型時進行擴展,找到權重就是我們的“訓練”階段,所以,每當你聽到有人在“訓練”神經網路時,它只是指找到我們用來計算預測的權重,

圖片

這是一個簡單的預測模型,它接受輸入,進行計算,并給出輸出(由于輸出可以是連續值,我們所擁有的技術名稱是“回歸模型”)

注:回歸模型是一種用于預測因果關系的統計模型,它通常用于研究與某些因素有關的連續變數,它基于已知資料的線性或非線性方程,通過最小化誤差或損失函式來擬合資料,并通過該方程對未知資料進行預測,回歸模型可以用于分析多種因素對某一變數的影響,例如在經濟學、社會學、醫學、工程學等領域中,它經常被用于探索因果關系和預測未來趨勢,常見的回歸模型包括線性回歸、多項式回歸、邏輯回歸等,

讓我們將這個程序可視化(為了簡化,讓我們將價格單位從1美元換成1000美元,現在我們的權重是0.180而不是180):

圖片

更難、更好、更快、更強

我們能否在估計價格方面做得比基于資料點平均值更好呢?讓我們試試,首先,讓我們定義在這種情況下更好的意義,如果我們將模型應用于我們擁有的三個資料點,它會做得多好?

圖片

如圖所示,黃線是誤差值,黃線長是不好的,我們希望盡可能減小黃線的長度,

面積 (x) 價格 ($1000) (y_) 預測值 (y) y_-y (y_-y)2

2,104     399.9             379                 21      449

1,600     329.9             288                 42     1756

2,400     369                432                 -63    3969

平均值:2,058

在這里,我們可以看到實際價格值、預測價格值以及它們之間的差異,然后我們需要對這些差異求平均,以便得到一個表示預測模型中有多少錯誤的數字,問題是,第3行的值為-63,如果我們想用預測值和價格之間的差異作為衡量誤差的標準,我們必須處理這個負值,這就是為什么我們引入了一個額外的列,顯示誤差的平方,從而消除了負值,這就是我們定義更好模型的標準 - 更好的模型是誤差較小的模型,誤差是資料集中每個點誤差的平均值,對于每個點,誤差是實際值和預測值之間的差異的平方,這稱為均方誤差,將其作為指導來訓練我們的模型使其成為我們的損失函式(也稱為成本函式),

圖片

現在我們已經定義了衡量更好模型的標準,讓我們嘗試一些其它權重值,并將它們與我們的平均值進行比較:

圖片

通過改變權重,我們無法在模型上做出太多改進,但是,如果我們添加一個偏置值,我們可以找到改進模型的值,現在我們添加了這個b值到線性公式中,我們的預測值可以更好地逼近我們的實際值,在這種情境下,我們稱之為“偏置”,這使得我們的神經網路看起來像這樣:

圖片

我們可以概括地說,一個具有一個輸入和一個輸出的神經網路(劇透警告:沒有隱藏層)看起來像這樣:

圖片

在這個圖中,W 和 b 是我們在訓練程序中找到的值,X 是我們輸入到公式中的值(例如,我們的示例中的房屋面積(平方英尺)),Y 是預測的價格,現在,計算預測使用這個公式:

圖片

因此,我們當前的模型通過將房屋面積作為 x 插入,使用這個公式來計算預測:

圖片

訓練你的龍  你想嘗試訓練我們的玩具神經網路嗎?通過調整權重和偏置來最小化損失函式,你能讓誤差值低于799嗎?

圖片

自動化 恭喜你手動訓練了你的第一個神經網路!讓我們看看如何自動化這個訓練程序,下面是另一個帶有自動駕駛功能的示例,這些是 GD Step 按鈕,它們使用一種稱為“梯度下降”的演算法,嘗試向正確的權重和偏置值邁進,以最小化損失函式,

圖片
圖片

這兩個新圖表可以幫助你在調整模型引數(權重和偏置)時跟蹤誤差值,跟蹤誤差非常重要,因為訓練程序就是盡可能減少這個誤差,梯度下降如何知道它的下一步應該在哪里?可以利用微積分,你看,我們知道我們要最小化的函式(損失函式,所有資料點的(y_ - y)2的平均值),也知道當前輸入的值(當前的權重和偏置),損失函式的導數告訴我們應該如何調整 W 和 b 以最小化誤差,想了解更多關于梯度下降以及如何使用它來計算新的權重和偏置的資訊,請觀看 Coursera 機器學習課程的第一講,

引入第二變數

房子的大小是決定房價的唯一變數嗎?顯然還有很多其他因素,讓我們添加另一個變數,看看我們如何調整神經網路來適應它,假設你的朋友做了更多的研究,找到了更多的資料點,她還發現了每個房子有多少個浴室:

面積(平方英尺)浴室數量 價格

2,104                   3            399,900

1,600                   3            329,900

2,400                   3            369,000

1,416                   2            232,000

3,000                   4            539,900

1,985                   4            299,900

1,534                   3            314,900

1,427                   3            198,999

1,380                   3            212,000

1,494                   3            242,500

我們的兩變數神經網路如下所示:

圖片

現在我們需要找到兩個權重(每個輸入一個)和一個偏置來創建我們的新模型,計算Y的公式如下:

圖片

但是我們如何找到w1和w2呢?這比我們只需要考慮一個權重值時要復雜一些,多一個浴室對我們預測房價的影響有多大呢?嘗試找到合適的權重和偏置,從這里開始,你會看到隨著輸入數量的增加,我們面臨的復雜性也在增加,我們開始失去創建簡單二維形狀的能力,這使得我們不能一眼就能看出模型的特點,相反,我們主要依賴于在調整模型引數時,誤差值是如何變化的,

圖片

我們再次依靠可靠的梯度下降法來幫助我們找到合適的權重和偏置,

特征

現在你已經了解了具有一個和兩個特征的神經網路,你可以嘗試添加更多特征并使用它們來計算預測值,權重的數量將繼續增長,當我們添加每個新特征時,我們需要調整梯度下降的實作,以便它能夠更新與新特征相關的新權重,這里需要注意的是,我們不能盲目地將我們所知道的所有資訊都輸入到網路中,我們必須在輸入模型的特征上有所選擇,特征選擇/處理是一個擁有自己一套最佳實踐和注意事項的獨立學科,如果你想看一個關于檢查資料集以選擇輸入預測模型的特征的程序的例子,請查看《泰坦尼克號之旅》,這是一個筆記本,Omar EL Gabry在其中講述了他解決Kaggle泰坦尼克挑戰的程序,Kaggle提供了泰坦尼克號上乘客的名單,包括姓名、性別、年齡、船艙以及該人是否幸存等資料,挑戰的目標是建立一個模型,根據其他資訊預測一個人是否幸存,

分類

讓我們繼續調整我們的例子,假設你的朋友給你一份房子清單,這次,她標注了哪些房子在她看來具有合適的大小和浴室數量:

面積(平方英尺)浴室數量 標簽

2,104                   3            Good

1,600                   3            Good

2,400                   3            Good

1,416                   2            Bad

3,000                   4            Bad

1,985                   4            Good

1,534                   3            Bad

1,427                   3            Good

1,380                   3            Good

1,494                   3            Good

她需要你使用這個方法來創建一個模型,根據房子的大小和浴室數量來預測她是否會喜歡這個房子,你將使用上面的串列來構建模型,然后她將使用這個模型來對許多其他房子進行分類,在這個程序中還有一個額外的改變,那就是她還有另一個包含10個房子的串列,她已經對這些房子進行了標記,但她沒有告訴你,這個另外的串列將在你訓練模型后用來評估你的模型,從而確保你的模型能夠把握她實際喜歡的房子特征,我們迄今為止所嘗試的神經網路都是進行“回歸”操作的,它們計算并輸出一個“連續”的值(輸出可以是4,或100.6,或2143.342343),然而,在實踐中,神經網路更常用于“分類”型別的問題,在這些問題中,神經網路的輸出必須是一組離散值(或“類別”),如“好”或“壞”,實踐中的作業原理是,我們將會得到一個模型,該模型會表明某個房屋是“好”的可能性為75%,而不僅是簡單地輸出“好”或“壞”,

圖片

在實踐中,我們可以將我們已經看到的網路轉換成一個分類網路,讓它輸出兩個值——一個值代表某個個類別(我們現在的類別是“好”和“壞”),然后我們將這些值通過一個叫做“softmax”的操作,softmax的輸出是每個類別的概率,例如,假設網路的這一層輸出“好”為2,“壞”為4,如果我們將[2, 4]輸入到softmax中,它將回傳[0.11, 0.88]作為輸出,這意味著網路有88%的把握認為輸入的值是“壞”的,我們的朋友可能不喜歡那個房子,

Softmax函式接受一個陣列作為輸入,并輸出一個相同長度的陣列,注意到它的輸出都是正數,并且總和為1,這在輸出概率值時非常有用,另外,盡管4是2的兩倍,但它的概率不僅是2的兩倍,而且是2的八倍,這是一個有用的特性,它可以夸大輸出之間的差異,從而改善我們的訓練程序,

圖片

如您在最后兩行中所看到的,softmax可以擴展到任意數量的輸入,所以現在如果我們的朋友添加了第三個標簽(比如說“不錯,但我得把一間房子租給airbnb”),softmax可以擴展以適應這種變化,花點時間探索一下網路的形狀,看看當您改變特征數量(x1、x2、x3等)(可以是面積、浴室數量、價格、靠近學校/作業的距離等)和類別數量(y1、y2、y3等)(可以是“太貴了”、“性價比高”、“如果我把一間房子租給airbnb就好了”、“太小了”)時,網路是如何變化的,

圖片

您可以在我為本文創建的這個筆記本中看到如何使用 TensorFlow 創建和訓練這個網路的示例,真正的動力 如果您已經讀到這里了,我必須向您揭示我寫這篇文章的另一個動力,這篇文章旨在作為一個更加溫和的 TensorFlow 教程入門,如果您現在開始學習《MNIST 機器學習初學者》,并遇到了這張圖:

圖片

我寫這篇文章是為了讓沒有機器學習經驗的人們為 TensorFlow 入門教程中的這張圖做好準備,這就是為什么我模擬了它的視覺風格,我希望您會覺得準備充分,并且了解這個系統以及它的作業原理,如果您想開始嘗試撰寫代碼,請隨時從入門教程開始,它教一個神經網路如何識別手寫數字,您還應該通過學習我們在這里討論的概念的理論和數學基礎來繼續您的學習,現在可以提出的好問題包括:

  1. 其他型別的損失函式有哪些?
  2. 哪些損失函式更適用于哪些應用?
  3. 使用梯度下降實際計算新權重的演算法是什么?
  4. 在您已經了解的領域中,機器學習的應用有哪些?
  5. 通過將這個技能與您技能庫中的其他技能相結合,您可以創造出什么新奇的魔法?
  • 以下是一些很好的學習資源:
  1. Coursera上的機器學習課程,由Andrew Ng主講,這是我開始學習的課程,從回歸開始,然后轉向分類和神經網路,
  2. Coursera上的神經網路與機器學習課程,由Geoffrey Hinton主講,更側重于神經網路及其視覺應用,
  3. 斯坦福大學的CS231n課程:卷積神經網路與視覺識別,由Andrej Karpathy主講,了解一些高級概念以及使用深度神經網路進行視覺識別的最新技術,
  4. 神經網路社區是一個很好的資源,可以了解不同型別的神經網路,

致謝:

感謝Yasmine Alfouzan、Ammar Alammar、Khalid Alnuaim、Fahad Alhazmi、Mazen Melibari和Hadeel Al-Negheimish在審查本文的早期版本時提供的幫助,如有任何更正或反饋,請在Twitter上聯系我,

原文地址: https://jalammar.github.io/visual-interactive-guide-basics-neural-networks/

最后,越研究越感覺GPT是一個寶庫,還有很多東西需要挖掘,而GPT本身也在不斷迭代發展,大家有興趣持續關注,和我一起走這條強人工智能學習實踐之路的話,可以關注下公眾號“強人工智能之路”,目前支持免費的GPT3.5對話,

 

原作者:@JayAlammar 翻譯:成江東

本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/Understanding-Machine-Learning-and-GPT-Principles-from-Shallow-to-Deep.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555318.html

標籤:其他

上一篇:解密Prompt系列9. 模型復雜推理-思維鏈COT基礎和進階玩法

下一篇:返回列表

標籤雲
其他(161096) Python(38230) JavaScript(25498) Java(18240) C(15237) 區塊鏈(8271) C#(7972) AI(7469) 爪哇(7425) MySQL(7254) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4598) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2436) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) 功能(1967) HtmlCss(1967) Web開發(1951) C++(1941) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 由淺入深了解機器學習和GPT原理

    目前看到的最通俗易懂、由淺入深的圖解機器學習和GPT原理的系列文章,這是第一篇,由我和 GPT-4共同翻譯完成,分享給大家。 ......

    uj5u.com 2023-06-16 08:37:47 more
  • 解密Prompt系列9. 模型復雜推理-思維鏈COT基礎和進階玩法

    這一篇真的是解密prompt!我們會討論下思維鏈(chain-of-Thought)提示詞究竟要如何寫,如何寫的更高級,介紹包括few-shot,zero-shot,循序漸進式和一致性COT的寫法 ......

    uj5u.com 2023-06-16 08:20:09 more
  • 讀資料壓縮入門筆記05_字典轉換

    為了找到資料流的理想分詞,我們需要有某種方法來處理現有的和那些還沒有遇到的符號,并能以一種高效的方式將兩者合并為盡可能長的符號集 ......

    uj5u.com 2023-06-16 08:14:39 more
  • 網路傳輸中的重要引數-簡單的網路畫像

    [toc] 在前兩篇博文對[帶寬](https://www.cnblogs.com/mapleumr/p/17469513.html)、[時延與丟包率](https://www.cnblogs.com/mapleumr/p/17464980.html)有了初步的認識后(引流引流哈哈哈),我們已經可以 ......

    uj5u.com 2023-06-16 08:05:27 more
  • k8s實戰案例之基于StatefulSet控制器運行MySQL一主多從

    StatefulSet本質上是Deployment的?種變體,在v1.9版本中已成為GA版本,它為了解決有狀態服務的問題,它所管理的Pod擁有固定的Pod名稱,啟停順序,在StatefulSet中,Pod名字稱為?絡標識(hostname),還必須要?到共享存盤。在Deployment中,與之對應的... ......

    uj5u.com 2023-06-16 08:00:11 more
  • UE開發使用Rider時快取干爆C盤的解決方案

    我們在使用Rider開發UE時,Ride會為每一個專案創建一個解決方案快取,如果開幾個新專案寫測驗demo,我們的C盤會逐漸捉急 ![默認情況下](https://img2023.cnblogs.com/blog/2003597/202306/2003597-20230615183008462-89 ......

    uj5u.com 2023-06-16 07:59:58 more
  • 大促質量備戰之三化戰役:“常態化、精細化、一體化”

    大促作為JD一年兩度的盛事,質量備戰是不可或缺的重要環節。每逢大促都是一次大型的聯合戰役,在這種戰役中,不僅有各種“海陸空”技術爭奇斗艷,還會讓我們的技術視野變得更寬闊,讓我們協同變得更默契,所謂以戰養兵。測驗團隊作為質量備戰團隊,沉淀了“常態化”、“精細化”、“一體化”的三化備戰策略,希望與君共勉... ......

    uj5u.com 2023-06-16 07:59:52 more
  • web基礎與HTTP協議

    目錄 一、DNS 二、域名 三、web基礎 四、HTTP 五、總結 摘要:簡單敘述web基礎,網頁的概念,域名決議,域名結構,HTML超文本傳輸語言,cookie和session擴展 一、DNS 1.DNS概念 內網和外網無法通信,為了內網可以和外網通信,dns技術解決問題,可以將公網和私網互相通信 ......

    uj5u.com 2023-06-16 07:59:35 more
  • SQL查詢面試題,會這些基本夠用了

    ### 寫在前面 我已經記不起來,有多久沒更新文章了。 5月中旬我還在上班,中旬以后一系列發生的事情,真的遠遠超出了可承受范圍,只能硬著頭皮面對! 我是誰,我應該是誰,又能怎樣,只能向前····· ### 資料庫實體 #### class表 ![image.png](https://p6-jueji ......

    uj5u.com 2023-06-16 07:58:43 more
  • 科普|一文看懂虛擬人技術原理

    本文作者來自即構開發者社區@ Daniel 投稿,為我們分享時下熱門的數字人技術。IDC 預計,到 2026 年,中國 AI 數字人市場規模將達到 102.4 億元。開發者有必要對數字人技術有完整的認知和理解。 ......

    uj5u.com 2023-06-16 07:58:35 more