貝葉斯機器學習路線圖

来源:http://www.cnblogs.com/bayesianML/archive/2017/02/12/6377588.html
-Advertisement-
Play Games

這是一份貝葉斯機器學習路線圖, 正在不斷更新中. 路線圖由簡短的介紹配以相應的學習資源組成, 讀者不一定要按順序學習, 可以直接定位到自己需要的地方. 很多時候, 我們希望自學某個領域的知識, 學習能力是不差的, 但苦於不知該學哪些, 從何學起, 看什麼書/視頻好? 各個概念/知識點之間是怎樣的聯繫... ...


這是一份貝葉斯機器學習路線圖, 正在不斷更新中. 路線圖由簡短的介紹配以相應的學習資源組成, 讀者不一定要按順序學習, 可以直接定位到自己需要的地方. 很多時候, 我們希望自學某個領域的知識, 學習能力是不差的, 但苦於不知該學哪些, 從何學起, 看什麼書/視頻好? 各個概念/知識點之間是怎樣的聯繫? 這份路線圖是為解決以上問題而生的, 對於學習貝葉斯機器學習應該十分有幫助. 若您發現錯漏, 歡迎評論指正! 也希望有更多的人願意分享自己所在領域的"學習路線圖"! (註意: 文中部分資源鏈接需要科學上網方可打開)


本文目錄結構如下:

  • 核心主題
  • 進階主題
    • 模型
      • 邏輯回歸(Logistic regression)
      • 貝葉斯網路(Bayesian networks)
      • Latent Dirichlet allocation(LDA)
      • 線性動態系統(Linear dynamical systems)
      • 稀疏編碼(Sparse coding)
    • 貝葉斯非參數
      • 高斯過程(Gaussian processes)
      • Chinese restaurant process(CRP)
      • Hierarchical Dirichlet process
      • Indian buffet process(IBP)
      • Dirichlet diffusion trees
      • Pitman-Yor process
    • 採樣演算法
      • 摺疊Gibbs採樣(Collapsed Gibbs sampling)
      • 哈密爾頓蒙特卡洛(Hamiltonian Monte Carlo)(HMC)
      • 切片採樣(Slice sampling)
      • 可逆跳躍MCMC(reversible jump MCMC)
      • Sequential Monte Carlo(SMC)
        • 粒子濾波器(Particle filter)
        • 退火重要性採樣(Annealed importance sampling)
    • 變分推斷
      • 變分貝葉斯(Variational Bayes)
      • 平均場近似(Mean field approximation)
      • 期望傳播(expectation propagation)
    • 信念傳播(Belief propagation)
      • 樹結構圖模型
        • Sum-product algorithm
        • Max-product algorithm
      • 非樹結構圖模型
        • 迴圈信念傳播(Loopy belief propagation)
        • 連接樹演算法(Junction tree algorithm)
    • 理論
      • 無信息先驗(uninformative priors)
        • Jeffreys prior
      • 最大似然的漸進(asymptotics of maximum likelihood)

貝葉斯統計是統計的一個分支, 它的特點是把我們感興趣的量(比如統計模型的參數)看作隨機變數. 給定觀察數據後, 我們對這些量的後驗分佈進行分析從而得出結論. 雖然貝葉斯統計的核心思想已經歷經很多年了, 但貝葉斯的思想在過去近20年對機器學習產生了重大影響, 因為它在對真實世界現象建立結構化模型時提供了靈活性. 演算法的進步和日益增長的計算資源使得我們可以擬合豐富的, 高度結構化的模型, 而這些模型在過去是很棘手的.

這個路線圖旨在給出貝葉斯機器學習中許多關鍵思想的指引. 如果您正考慮在某些問題中使用貝葉斯方法, 您需要學習"核心主題"中的所有內容. 即使您只是希望使用諸如 BUGS, Infer.NET, 或 Stan等軟體包, 這些背景知識也對您很有幫助. 如果這些軟體包不能馬上解決您的問題, 知道模型的大致思想可幫助您找出問題所在.

如果您正考慮研究貝葉斯機器學習, 那麼許多論文會假設您已經掌握了核心主題的內容以及部分進階主題的內容, 而不再給出參考文獻. 閱讀本路線圖時, 我們不需要按順序學習, 希望本文可以在您需要時為您提供幫助.

核心主題

這一章覆蓋了貝葉斯機器學習的核心概念. 如果您希望使用這些工具, 建議您學習本章的所有內容.

中心問題

什麼是貝葉斯機器學習? 一般來說, 貝葉斯方法旨在解決下麵給出的某一個問題:

  • 參數估計(parameter estimation)
    假設您已經建好了一個統計模型, 並且希望用它來做預測. 抑或您認為模型中的參數很有意義, 所以希望擬合這些參數來學習到某些東西. 貝葉斯方法是在給定觀察數據後, 去計算或者近似這些參數的後驗分佈.
  1. 您通常會希望使用訓練好的模型來作出一些決策行為. 貝葉斯決策理論(Bayesian decision theory)提供了選擇行為的一個框架.
  • 模型比較(model comparison)
    您可能有許多個不同的候選模型, 那麼哪一個是最貼切給定數據的呢? 一種常見的情形是: 您有一些形式相同但複雜度不同的模型, 並且希望在複雜度和擬合度間權衡.
  1. 與選擇單個模型相比, 您可以先為模型定義先驗, 並且根據模型的後驗對預測進行平均. 這便是貝葉斯模型平均(bayesian model averaging).

此外, 貝葉斯網路(Bayesian networks) (Bayes nets)的基礎知識也值得一學, 因為這些符號在討論貝葉斯模型時會經常用到. 由於貝葉斯方法把模型參數也看作隨機變數, 所以我們可以把貝葉斯推斷問題本身表達為貝葉斯網路.

閱讀本章內容會告訴您貝葉斯方法解決什麼問題, 但是沒告訴您一般情況下, 如何真正地解決這些問題. 這是本路線圖剩餘部分將討論的內容.

非貝葉斯方法(Non-Bayesian techniques)

作為背景知識, 瞭解如何使用非貝葉斯方法擬合生成模型是有助於理解的. 這麼做的其中一個理由是: 這些方法更易於理解, 並且一般來說結果已經足夠好了. 此外, 貝葉斯方法跟這些方法存在一些相似性, 學習這些方法後, 通過類比可以幫助我們學習貝葉斯方法.

最基礎的, 您需要明白 泛化(generalization)的符號, 或者知道一個機器學習演算法在未知數據上表現如何. 這是衡量機器學習演算法的基礎. 您需要理解以下方法:

基本推斷演算法

一般來說, 貝葉斯推斷需要回答的問題是: 給定觀察數據後, 推斷關於模型參數(或潛在變數(latent variables))的後驗分佈. 對於一些簡單模型, 這些問題擁有解析解. 然而, 大多數時候, 我們得不到解析解, 所以需要計算近似解.

如果您需要實現自己的貝葉斯推斷演算法, 以下可能是最簡單的選擇:

  • MAP估計(MAP estimation)
    使用最優參數的點估計來近似後驗. 這把積分問題替換為了優化問題. 但這並不代表問題就很簡單了, 因為優化問題本身也常常很棘手. 然而, 這通常會簡化問題, 因為優化軟體包比採樣軟體包更普適(general)也更魯棒(robust).
  • 吉布斯採樣(Gibbs sampling)
    吉布斯採樣是一種迭代的採樣過程, 每一個隨機變數都從給定其他隨機變數的條件分佈中採樣得到. 採樣的結果很有希望是後驗分佈中的一個近似樣本.

您還應該知道下列常用的方法. 他們的一般公式大多數時候都過於寬泛而難以使用, 但是在很多特殊情形下, 他們還是很強大的

  • 馬爾科夫鏈蒙特卡洛(Markov chain Monte Carlo)
    一類基於採樣的演算法, 這些演算法基於參數的馬爾科夫鏈, 該馬爾科夫鏈的穩態分佈是後驗分佈.
    1.特別的, Metropolis-Hastings (M-H)演算法是一類實用的構建有效MCMC鏈的方法. 吉布斯採樣也是M-H演算法的特例.
  • 變分推斷(Variational inference)
    嘗試用易於處理的分佈去近似難以處理的分佈. 一般來說, 易處理分佈的參數通過最小化某種度量指標來選擇, 這個度量指標衡量了近似分佈和真實分佈之間的距離.

模型

以下是一些簡單的生成模型, 這些模型常常運用貝葉斯方法.

  • 混合高斯(mixture of Gaussians)
    混合高斯模型中, 每個數據點屬於若幹簇或者群組中的其中一個, 每個簇中的數據點都服從高斯分佈. 擬合這樣一個模型可以讓我們推斷出數據中有意義的分組情況.
  • 因數分析(factor analysis)
    因數分析中, 每個數據點被更低維度的線性函數近似表達. 我們的想法是, 潛在空間(latent space)中每個維度對應一個有意義的因數, 或者數據中變化的維度.
  • 隱馬爾科夫模型(hidden Markov models)
    隱馬爾科夫模型適用於時間序列數據, 其中有一個潛在的離散狀態隨著時間的推移而演變.

雖然貝葉斯方法大多數時候與生成模型相聯繫, 但它也可以被用於判別模型的情況. 這種情形下, 我們嘗試對已知觀測數據時目標變數的條件分佈直接進行建模. 標準的例子是貝葉斯線性回歸(Bayesian linear regression).

貝葉斯模型比較

推斷演算法的小節為我們提供了近似後驗推斷的工具. 那麼比較模型的工具是什麼呢? 不幸的是, 大多數模型比較演算法相當複雜, 在您熟悉下麵描述的高級推理演算法前, 您可能不想自己實現它們. 然而, 有兩個相當粗略的近似模型比較是較為容易實現的.

進階主題

本章將討論貝葉斯機器學習中更進階的主題. 您可以以任何順序學習以下內容

模型

在"核心主題"一章中, 我們列出了一些常用的生成模型. 但是大多數的數據集並不符合那樣的結構. 貝葉斯建模的強大之處在於其在處理不同類型的數據時提供了靈活性. 以下列出更多的模型, 模型列出的順序沒有特殊意義.

  1. 線性高斯模型(Linear-Gaussian models)是網路中的變數都服從聯合高斯的重要特殊情況. 即使在具有相同結構的離散網路難以處理的情況下, 這些網路的推論都常易於處理.

貝葉斯非參數

上述所有模型都是參數化的, 因為它們是以固定的有限數量的參數表示的. 這是有問題的, 因為這意味著我們需要預先指定一些參數(比如聚類中的簇的數目), 而這些參數往往是我們事先不知道的.

這個問題可能對上述模型看起來並無大礙, 因為對於諸如聚類的簡單模型, 我們通常可以使用交叉驗證來選擇好的參數. 然而, 許多廣泛應用的模型是更為複雜的, 其中涉及許多獨立的聚類問題, 簇的數量可能是少數幾個, 也可能是數千個.

貝葉斯非參數是機器學習和統計學中不斷研究的領域, 通過定義無限複雜的模型來解決這個問題. 當然, 我們不能明確地表示無限的對象. 但是關鍵的觀點是, 對於有限數據集, 我們仍然可以在模型中執行後驗推斷, 而僅僅明確地表示它們的有限部分.

下麵給出一些重要的組成貝葉斯非參數模型的構建模塊:

  • 高斯過程(Gaussian processes)
    高斯過程是函數上的先驗, 使得在任何有限集合點處採樣的值是服從聯合高斯的. 在許多情況下, 為在函數上賦予先驗, 您需要假設後驗推理是易於處理的.
  • Chinese restaurant process(CRP)
    CRP是無限對象集合的劃分的先驗
  1. 這常被用於聚類模型, 使得簇的數目無需事先指定. 推理演算法相當簡單且易於理解, 所以沒有理由不使用CRP模型代替有限聚類模型.
  2. 這個過程可以等價於Dirichlet process.
  • Hierarchical Dirichlet process
    包含一組共用相同base measure的Dirichlet process, baase measure本身也是從Dirichlet process中選取的.
  • Indian buffet process(IBP)
    IBP無限二進位矩陣的先驗, 使得矩陣的每一行僅具有有限個1. 這是在每個對象可以擁有多個不同屬性時最常用的模型. 其中, 矩陣的行對應於對象, 列對應於屬性, 如果對象具有某屬性, 對應列的元素為1.
  1. 最簡單的例子可能是IBP linear-Gaussian model. 其中, 觀察到的數據是屬性的線性函數.
  2. 還可以根據beta process來看IBP過程. 本質上, beta process之於IBP正如Dirichlet process之於CRP.
  • Dirichlet diffusion trees
    一個分層聚類模型. 其中, 數據點以不同的粒度級別聚類. 即可能存在一些粗粒度的簇, 但是這些簇又可以分解成更細粒度的簇.
  • Pitman-Yor process
    類似於CRP, 但是在聚類大小上有更重尾的分佈(比如冪律分佈). 這說明您希望找到一些非常龐大的簇, 以及大量的小簇. 比起CRP選擇0的指數分佈, 冪律分佈對於許多真實數據有更好的擬合效果.

採樣演算法

從"核心主題"章節, 您已經學習了兩個採樣演算法:Gibbs採樣Metropolis-Hastings(M-H)演算法. Gibbs採樣涵蓋了很多簡單的情況, 但在很多模型中, 您甚至不能計算更新. 即使對於適用的模型, 如果不同的變數緊密耦合(tightly coupled), 採樣過程也會mix得非常緩慢. M-H演算法是更一般的, 但是M-H演算法的一般公式中沒有提供關於如何選擇提議分佈(proposals)的指導, 並且為實現良好的mix, 通常需要非常仔細地選擇提議分佈.

下麵是一些更先進的MCMC演算法, 這些演算法在特定情形中表現更為良好:

  • collapsed Gibbs sampling
    變數的一部分在理論上被邊緣化(marginalized)或摺疊(collapsed)掉, 併在剩下的變數上進行Gibbs採樣. 例如, 當擬合CRP聚類模型時, 我們通常將聚類參數邊緣化掉, 並對聚類分配執行Gibbs採樣. 這可以顯著地改善mix, 因為聚類分配和簇參數是緊密耦合的.
  • Hamiltonian Monte Carlo (HMC)
    連續空間中M-H演算法的實例, 其使用對數概率的梯度來選擇更好的探索方向. 這是驅動 Stan的演算法.
  • slice sampling
    一種從一維分佈中採樣的輔助變數方法. 其關鍵賣點是演算法不需要指定任何參數. 因此, 它經常與其他演算法(例如HMC)結合, 否則將需要指定步長參數.
  • reversible jump MCMC
    在不同維度的空間之間構造M-H提議分佈的方式. 最常見的用例是貝葉斯模型平均

雖然在實踐中使用的大多數採樣演算法是MCMC演算法, 但Sequential Monte Carlo(SMC)演算法值得一提. 這是從一系列相關分佈中近似採樣的另一類技術.

  • 最常見的例子可能是粒子濾波器(particle filter), 通常應用於時間序列模型的推理演算法. 它每次一步地考慮觀察數據, 並且在每個步驟中, 用一組粒子表示潛在狀態的後驗
  • 退火重要性採樣(Annealed importance sampling) (AIS)是另一種SMC方法, 其通過一系列中間分佈從簡單的初始分佈(比如先驗)到難處理的目標分佈(例如後驗)逐漸"退火" 針對每個中間分佈執行MCMC轉換. 由於在初始分佈附近mixing通常更快, 這應該有助於採樣器避免困在局部模式中.
  1. 演算法計算一組權重, 這些權重亦可被用於 估計邊際似然(estimate the marginal likelihood). 當使用了足夠多的中間分佈時, 權重的方差會很小, 因此產生了一個精確的邊際似然估計.

變分推斷(Variational inference)

變分推斷是基於優化而不是採樣的另一類近似推斷方法. 其基本想法是用一個易處理的近似分佈來逼近難處理的後驗分佈. 選擇近似分佈的參數以使近似分佈和後驗分佈之間的距離的某些度量(通常使用KL散度)最小化.

我們很難對變分推斷和採樣方法之間的折中作出任何一般性的陳述, 因為這些都是一個廣泛的類別, 其中包括了許多特殊的演算法, 既有簡單的又有複雜的. 然而, 有一些一般的經驗規則:

  • 變分推斷演算法具有與採樣方法不同的實現困難
  1. 變分推斷演算法更難, 因為它們需要冗長的數學推導來確定更新規則.
  2. 然而, 一旦實現, 變分貝葉斯方法可以更容易地被檢驗, 因為可以對優化代碼採用標準檢查(梯度檢查, 局部最優測試等).
  3. 此外, 大多數變分推斷演算法收斂到(局部)最優解, 這消除了檢查收斂診斷的需要.
  • 大多數變分推理分佈的輸出是一個分佈, 而不是樣本.
  1. 為了回答許多問題, 例如模型參數的期望或者方差, 可以簡單地檢查變分分佈. 相比之下, 採樣方法通常需要收集大量採樣樣本, 這可能需要很大的開銷.
  2. 然而, 使用變分法, 近似的精度受到近似分佈族的表達能力的限制, 並且近似分佈與後驗分佈有多大不同並不總是那麼明顯. 相反, 如果您運行一個採樣演算法足夠長時間, 最終您會得到較為準確的結果.

這裡給出一些變分推斷演算法的重要例子:

  1. 平均場也可以根據 凸對偶性(convex duality)來觀察, 這將導出與普通解釋不同的拓展
  • 期望傳播(expectation propagation)
    對迴圈置信傳播(loopy belief propagation)的一種近似. 它發送近似消息, 這些消息僅代表相關變數的充分統計量的期望.

下麵給出一些使用變分推斷方法的經典例子. 儘管你可能不會直接使用這些模型, 但是它們給出了變分技巧如何更一般地用於貝葉斯模型的指引:

信念傳播(Belief propagation)

信念傳播是用於如貝葉斯網路(Bayes nets)馬爾科夫場(Markov random fields) (MRFs)等圖模型的另一類推斷演算法. 模型中的變數相互"傳遞消息", 它們總結了關於其他變數的聯合分佈的信息. 信念傳播有兩種一般形式:

  • 當應用於樹結構圖模型時, BP執行精確的後驗推斷. 有兩種特殊的形式:
  1. the sum-product algorithm
    計算每個單獨變數(以及每一對相鄰變數)的邊際分佈.
  2. the max-product algorithm
    計算所有變數的最可能的聯合分配
  • 還可以在不是樹結構的圖中應用相同的消息傳遞規則. 這沒有給出確切的結果, 事實上甚至缺少基本的保證, 例如收斂到固定點, 但通常它在實踐中能很有效. 這通常被稱為迴圈信念傳播(loopy belief propagation), 以區別於樹結構的版本, 但令人困惑的是, 一些研究人員簡單地將其稱為"信念傳播"
  1. Loopy BP被解釋為一種變分推斷演算法

連接樹演算法(junction tree algorithm)給出了通過定義粗糙的"超變數(super-variables)"來對非樹結構圖應用精確的BP的方法. 定義"超變數"後的圖是樹結構的.

樹上的BP最常見的特殊情況是HMMs的前向-後向演算法(forward-backward algorithm) .卡爾曼平滑(Kalman smoothing)也是前向-後向演算法的一種特例, 因此也是一種BP.

BP在電腦視覺和資訊理論中被廣泛使用, 在這兩個領域中, 推斷問題往往具有規則的結構. 在貝葉斯機器學習中, BP不常被單獨使用, 但是它可以是基於變分或採樣的演算法中的強大組成部分.

理論

最後, 給出貝葉斯方法中的一些理論問題.


參考

metacademy



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、瀑布流是個啥? 瀑布流,是比較流行的一種網站頁面佈局,視覺表現為參差不齊的多欄佈局,隨著頁面滾動條向下滾動,這種佈局還會不斷載入數據塊並附加至當前尾部。 最早採用瀑布流佈局的網站是Pinterest,逐漸在國內流行開來,比如我們熟知的百度圖片的佈局,在“很久”以前,百度圖片還是需要一頁一頁的點擊 ...
  • 在iOS 8中,蘋果引入了UITableView的一項新功能--Self Sizing Cells,對於不少開發者來說這是新SDK中一項非常有用的新功能。在iOS 8之前,如果想在表視圖中展示可變高度的動態內容時,你需要手動計算行高,而Self Sizing Cells為展示動態內容提供了一個解決方... ...
  • Android7.0 phone拒接流程分析--- 本文為原創文章,轉載請註明出處,http://www.cnblogs.com/lance2016/p/6391096.html ...
  • 凡是網上教程 有個5678步的總有這樣或者那樣的坑。 上周擼了一個小工具準備上傳到jcenter,方便管理以及以後使用。看了一下教程,短短幾步,弄了很久。 按Hongyang的教程http://www.voidcn.com/blog/lmj623565791/article/p-5798330.ht ...
  • 真機測試錯誤“The application could not be verified” 真機測試的時候報錯:“The application could not be verified”。這裡 http://stackoverflow.com/questions/28231338/ios app ...
  • 在BaseAdapter獲取View之前,BaseAdapter需要與數據源相關聯。 可以使用構造方法: BaseAdapter獲取View分三種:逗比式,普通式,文藝式。 逗比式:需要多次新建View,沒有充分利用列表組件(ListView,GridView)的緩衝機制,有浪費很大資源的嫌疑。 普 ...
  • 一、MySQL的下載 1.登陸MySQL的官網下載適用於64位系統的ZIP壓縮包(https://dev.mysql.com/downloads/mysql/) 二、解壓安裝包 將下載的ZIP壓縮包解壓到任意文件夾。(此處為: C:\mysql5.7) 三、修改配置文件 將解壓文件夾目錄下的my-d ...
  • 開發過程中經常遇到遠程訪問mysql的問題,每次都需要搜索,感覺太麻煩,這裡記錄下,也方便我以後查閱。 首先訪問本機的mysql(用ssh登錄終端,輸入如下命令): 輸入密碼登陸進去後,輸入如下的語句: 其中: user是用戶名mysql預設的是rootpassword是密碼自己設置%表示任意主機, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...