【Introduction to Reinforcement Learning】翻譯解讀2

2.2 馬爾可夫決策過程(MDPs)

馬爾可夫決策過程(MDP)為順序決策提供了框架,其中動作不僅影響即時獎勵,還會影響未來結果。與多臂老虎機問題不同,MDP中的即時獎勵與延遲獎勵相平衡。在多臂老虎機問題中,目標是確定在狀態 s s s下執行動作 a a a的價值,或者在MDP中,目標是衡量在假定采取最佳動作的情況下,采取動作 a a a在狀態 s s s下的價值。正確評估干預的長期效應需要估計這些狀態特定的值。MDPs由狀態、動作和獎勵 ( S , A , R ) (S, A, R) (S,A,R)組成。離散概率分布被分配給基于前一個狀態和動作的隨機變量 R t R_t Rt? S t S_t St?,并推導出這些變量的方程。一個系統被認為是馬爾可夫的,當一個動作的結果不依賴于過去的動作和狀態,僅依賴于當前狀態時。馬爾可夫性質要求狀態包含過去交互的所有重要細節,這些交互影響未來結果。這一點是MDPs在RL中使用的基礎。為了描述MDP的動態,我們使用狀態轉移概率函數 p ( s ′ , r ∣ s , a ) p(s' , r | s, a) p(s,rs,a),其定義如下:

p ( s ′ , r ∣ s , a ) ≡ Pr ? { S t = s ′ , R t = r ∣ S t ? 1 = s , A t ? 1 = a } (9) p(s', r | s, a) \equiv \Pr\{S_t = s', R_t = r | S_{t-1} = s, A_{t-1} = a\} \tag{9} p(s,rs,a)Pr{St?=s,Rt?=rSt?1?=s,At?1?=a}(9)

其中,函數 p p p定義了MDP的動態。以下狀態轉移概率、狀態-動作-下一個狀態三元組的期望獎勵可以通過四參數動態函數 p p p推導出來。我們可以推導出狀態轉移概率,狀態-動作對的期望獎勵,以及狀態-動作-下一個狀態三元組的期望獎勵,具體公式如下:

p ( s ′ ∣ s , a ) ≡ Pr ? { S t = s ′ ∣ S t ? 1 = s , A t ? 1 = a } = ∑ r p ( s ′ , r ∣ s , a ) (10) p(s' | s, a) \equiv \Pr\{S_t = s' | S_{t-1} = s, A_{t-1} = a\} = \sum_r p(s', r | s, a) \tag{10} p(ss,a)Pr{St?=sSt?1?=s,At?1?=a}=r?p(s,rs,a)(10)

r ( s , a ) ≡ E { R t ∣ S t ? 1 = s , A t ? 1 = a } = ∑ r r ? p ( s ′ , r ∣ s , a ) (11) r(s, a) \equiv \mathbb{E}\{R_t | S_{t-1} = s, A_{t-1} = a\} = \sum_r r \cdot p(s', r | s, a) \tag{11} r(s,a)E{Rt?St?1?=s,At?1?=a}=r?r?p(s,rs,a)(11)

r ( s , a , s ′ ) ≡ E { R t ∣ S t ? 1 = s , A t ? 1 = a , S t = s ′ } = ∑ r ∈ R r ? p ( s ′ , r ∣ s , a ) (12) r(s, a, s') \equiv \mathbb{E}\{R_t | S_{t-1} = s, A_{t-1} = a, S_t = s'\} = \sum_{r \in R} r \cdot p(s', r | s, a) \tag{12} r(s,a,s)E{Rt?St?1?=s,At?1?=a,St?=s}=rR?r?p(s,rs,a)(12)

動作的概念包括所有與學習相關的決策,狀態的概念則涵蓋了所有為做出這些決策而可用的信息。作為MDP框架的一部分,目標導向行為通過交互被抽象化。任何學習問題都可以簡化為三個信號:智能體與環境之間的動作、狀態和獎勵。許多應用已經證明了該框架的有效性。我們現在能夠正式定義和解決RL問題。我們已經定義了獎勵、目標、概率分布、環境和智能體等概念。然而,這些概念在定義時并不完全是形式化的。根據我們的論述,智能體的目標是最大化未來的獎勵,但這一點該如何在數學上表達呢?回報(return),記作 G t G_t Gt?,是從時間步 t t t開始所收到的獎勵的累積和。在階段性任務或事件驅動任務中,回報定義為:

G t ≡ R t + 1 + R t + 2 + ? + R T (13) G_t \equiv R_{t+1} + R_{t+2} + \dots + R_T \tag{13} Gt?Rt+1?+Rt+2?+?+RT?(13)

在這里, G t G_t Gt?是獎勵序列的一個特定函數。階段性任務是指智能體與環境之間的交互自然地按順序發生,稱為一個回合(episode),而任務則稱為階段性任務。一個很好的例子是經典的“吊死鬼”游戲(hangman)。在每個標準回合結束時,都將恢復初始狀態。術語“new games”是指從終結狀態之后到達的下一個狀態,即結束回合后進入的狀態。對于持續任務(如使用具有長期使用壽命的機器人)來說,任務通常會涉及持續的交互,且沒有終結狀態( T = ∞ T = \infty T=)。因此,對于持續任務的回報應當有不同的定義。若智能體始終能獲得獎勵,則回報可能是無限的。對于持續任務,當沒有終結狀態時,回報 G t G_t Gt?被定義為未來獎勵的折扣總和:

G t ≡ R t + 1 + γ R t + 2 + γ 2 R t + 3 + ? = ∑ k = 0 ∞ γ k R t + k + 1 (14) G_t \equiv R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \dots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} \tag{14} Gt?Rt+1?+γRt+2?+γ2Rt+3?+?=k=0?γkRt+k+1?(14)

其中, γ \gamma γ是折扣因子( 0 ≤ γ ≤ 1 0 \leq \gamma \leq 1 0γ1)。折扣因子影響未來獎勵的當前價值。當 γ < 1 \gamma < 1 γ<1時,無限和會收斂到有限值。當 γ = 0 \gamma = 0 γ=0時,智能體最大化即時獎勵;當 γ → 1 \gamma \to 1 γ1時,未來獎勵的影響變得更大。我們還可以遞歸地表示回報 G t G_t Gt?

G t ≡ R t + 1 + γ G t + 1 (15) G_t \equiv R_{t+1} + \gamma G_{t+1} \tag{15} Gt?Rt+1?+γGt+1?(15)

如果獎勵是非零且常數的,且 γ < 1 \gamma < 1 γ<1,則回報是有限的。對于階段性任務和持續任務,當 T = ∞ T = \infty T= γ = 1 \gamma = 1 γ=1時,方程(16)適用:

G t ≡ ∑ k = t + 1 T γ k ? t ? 1 R k (16) G_t \equiv \sum_{k=t+1}^{T} \gamma^{k-t-1} R_k \tag{16} Gt?k=t+1T?γk?t?1Rk?(16)

2.3 策略與價值函數

價值函數估計智能體處于某一狀態(或執行某一動作時)的期望回報。根據選擇的動作,這些因素會有所不同。價值函數和策略之間存在聯系,策略決定了根據狀態選擇動作的概率。價值函數可以分為兩大類:狀態價值函數動作價值函數。一個狀態 s s s在策略 π \pi π下的價值函數 v π ( s ) v_{\pi}(s) vπ?(s)是從狀態 s s s開始,按照策略 π \pi π執行后的期望回報。

v π ( s ) ≡ E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ] (17) v_{\pi}(s) \equiv \mathbb{E}_{\pi} \left[ \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} | S_t = s \right] \tag{17} vπ?(s)Eπ?[k=0?γkRt+k+1?St?=s](17)

另一方面,在狀態 s s s下,采取動作 a a a并隨后遵循策略 π \pi π的動作價值函數 q π ( s , a ) q_{\pi}(s, a) qπ?(s,a)是從狀態 s s s開始,執行動作 a a a后,按照策略 π \pi π繼續執行的期望回報:

q π ( s , a ) ≡ E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s , A t = a ] (18) q_{\pi}(s, a) \equiv \mathbb{E}_{\pi} \left[ \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} | S_t = s, A_t = a \right] \tag{18} qπ?(s,a)Eπ?[k=0?γkRt+k+1?St?=s,At?=a](18)

需要注意的是, v v v q q q之間的區別,即 q q q依賴于在每個狀態下采取的動作。對于10個狀態和每個狀態8個動作的情況, q q q需要80個函數,而 v v v只需要10個函數。根據策略 π \pi π,如果智能體從每個狀態獲取回報并取平均值,則該平均值會收斂到 v π ( s ) v_{\pi}(s) vπ?(s)。通過對每個狀態的回報取平均,最終收斂到 q π ( s , a ) q_{\pi}(s, a) qπ?(s,a)。因此, v π ( s ) v_{\pi}(s) vπ?(s)可以遞歸地表示為:

v π ( s ) ≡ E π [ G t ∣ S t = s ] = E π [ R t + 1 + γ G t + 1 ∣ S t = s ] = ∑ a π ( a ∣ s ) ∑ s ′ ∑ r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] (19) v_{\pi}(s) \equiv \mathbb{E}_{\pi}[G_t | S_t = s] = \mathbb{E}_{\pi}[R_{t+1} + \gamma G_{t+1} | S_t = s] = \sum_a \pi(a|s) \sum_{s'} \sum_r p(s', r | s, a)[r + \gamma v_{\pi}(s')] \tag{19} vπ?(s)Eπ?[Gt?St?=s]=Eπ?[Rt+1?+γGt+1?St?=s]=a?π(as)s?r?p(s,rs,a)[r+γvπ?(s)](19)

方程19是 v π v_{\pi} vπ?的貝爾曼方程。貝爾曼方程將一個狀態的價值與其潛在后繼狀態的價值聯系起來。該圖示例說明了從一個狀態到它的后繼狀態的預期。初始狀態的價值等于預期下一個狀態的折扣價值加上預期的獎勵。

v π ( s ) v_{\pi}(s) vπ?(s) q π ( s , a ) q_{\pi}(s, a) qπ?(s,a) 在強化學習(RL)中具有不同的用途。在評估確定性策略或需要理解智能體處于某一特定狀態時的表現時,使用狀態價值函數(state-value functions)。在策略評估和策略迭代方法中,策略已被明確地定義,并且評估在該策略下處于特定狀態的表現是必要的,這些方法非常有用。使用狀態價值函數的優勢在于,當存在許多動作時,只需評估狀態的值即可,而不需要評估每個動作的值。

另一方面,動作價值函數(action-value functions)用于評估和比較在同一狀態下采取不同動作的潛力。它們對于選擇動作至關重要,目的是確定每種情境下最合適的動作。由于動作價值函數考慮了從不同動作中獲得的期望回報,因此它們在具有隨機策略的環境中尤其有用。此外,當處理連續動作空間時,動作價值函數能夠提供更為詳細的關于動作影響的理解,有助于策略實施的微調。

示例: 考慮一個賭博場景,其中玩家有10美元并面臨決定賭多少錢的選擇。這個游戲說明了RL中的狀態和動作價值函數。狀態價值函數( v π ( s ) v_{\pi}(s) vπ?(s))量化了某狀態 s s s的期望累積未來獎勵,給定策略 π \pi π。假設玩家有5美元:

  • 對于固定的1美元賭注, v π ( 5 ) = 0.5 v_{\pi}(5) = 0.5 vπ?(5)=0.5 表示期望獲利0.5美元。
  • 對于固定的2美元賭注, v π ( 5 ) = ? 1 v_{\pi}(5) = -1 vπ?(5)=?1 表示期望損失1美元。

動作價值函數 q π ( s , a ) q_{\pi}(s, a) qπ?(s,a))評估在狀態 s s s下采取動作 a a a的期望累積未來獎勵。例如:

  • q π ( 5 , 1 ) = 1 q_{\pi}(5, 1) = 1 qπ?(5,1)=1 表示1美元賭注從5美元中獲得1美元的累積獎勵。
  • q π ( 5 , 2 ) = ? 0.5 q_{\pi}(5, 2) = -0.5 qπ?(5,2)=?0.5 表示從5美元中下注2美元的期望損失為0.5美元。

這個賭博游戲場景突顯了狀態和動作價值函數在RL中的作用,指導在動態環境中的最優決策。

2.4 最優策略與最優價值函數

解決RL任務涉及確定一個能夠最大化長期獎勵的策略。價值函數在策略之間創建了部分排序,允許根據期望的累積獎勵進行比較和排名。一個策略 π \pi π優于或等于 π 0 \pi_0 π0?,當且僅當對于所有狀態 s s s v π ( s ) ≥ v π 0 ( s ) v_{\pi}(s) \geq v_{\pi_0}(s) vπ?(s)vπ0??(s)。最優策略優于或等于所有其他策略,記作 π ? \pi^* π?,共享相同的最優狀態價值函數 v π ? v_{\pi^*} vπ??,該函數被定義為所有可能策略的最大價值函數。

v π ? ( s ) ≡ max ? π v π ( s ) ? s ∈ S (20) v_{\pi^*}(s) \equiv \max_{\pi} v_{\pi}(s) \quad \forall s \in S \tag{20} vπ??(s)πmax?vπ?(s)?sS(20)

最優策略還共享所有可能策略的最優動作價值函數 q π ? q_{\pi^*} qπ??,該函數被定義為所有可能策略的最大動作價值函數。

q π ? ( s , a ) ≡ max ? π q π ( s , a ) ? s ∈ S (21) q_{\pi^*}(s, a) \equiv \max_{\pi} q_{\pi}(s, a) \quad \forall s \in S \tag{21} qπ??(s,a)πmax?qπ?(s,a)?sS(21)

最優動作價值函數 q π ? ( s , a ) q_{\pi^*}(s, a) qπ??(s,a)與最優狀態價值函數 v π ? ( s ) v_{\pi^*}(s) vπ??(s)之間的關系通過以下方程給出:通過擁有最優動作價值函數 q π ? ( s , a ) q_{\pi^*}(s, a) qπ??(s,a),我們可以找到最優狀態價值函數 v π ? ( s ) v_{\pi^*}(s) vπ??(s),如方程22所示。

q π ? ( s , a ) = E [ R t + 1 + γ v π ? ( S t + 1 ) ∣ S t = s , A t = a ] (22) q_{\pi^*}(s, a) = \mathbb{E}[R_{t+1} + \gamma v_{\pi^*}(S_{t+1}) | S_t = s, A_t = a] \tag{22} qπ??(s,a)=E[Rt+1?+γvπ??(St+1?)St?=s,At?=a](22)

最優價值函數和策略表示RL中的理想狀態。然而,由于實際挑戰,真正的最優策略在計算密集的任務中很難找到,RL智能體通常通過近似最優策略來應對這些挑戰。動態規劃(DP)有助于識別最優值,假設環境的精確模型,這是在現實世界中很難獲得的挑戰。雖然從理論上講DP方法是合理的,但它們在實際應用中并不總是采樣高效的。DP和RL的基本思想是使用價值函數來組織搜索最優策略。

對于有限MDP,環境的動態由給定的概率 p ( s ′ , r ∣ s , a ) p(s', r | s, a) p(s,rs,a)描述。最優狀態價值函數 v π ? ( s ) v_{\pi^*}(s) vπ??(s)和最優動作價值函數 q π ? ( s , a ) q_{\pi^*}(s, a) qπ??(s,a)的貝爾曼最優性方程分別為方程23和方程24:

v π ? ( s ) = max ? a E [ R t + 1 + γ v π ? ( S t + 1 ) ∣ S t = s , A t = a ] = max ? a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ? ( s ′ ) ] (23) v_{\pi^*}(s) = \max_a \mathbb{E}[R_{t+1} + \gamma v_{\pi^*}(S_{t+1}) | S_t = s, A_t = a] = \max_a \sum_{s', r} p(s', r | s, a)[r + \gamma v_{\pi^*}(s')] \tag{23} vπ??(s)=amax?E[Rt+1?+γvπ??(St+1?)St?=s,At?=a]=amax?s,r?p(s,rs,a)[r+γvπ??(s)](23)

q π ? ( s , a ) = E [ R t + 1 + max ? a ′ q π ? ( S t + 1 , a ′ ) ∣ S t = s , A t = a ] = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ max ? a ′ q π ? ( s ′ , a ′ ) ] (24) q_{\pi^*}(s, a) = \mathbb{E}[R_{t+1} + \max_{a'} q_{\pi^*}(S_{t+1}, a') | S_t = s, A_t = a] = \sum_{s', r} p(s', r | s, a)[r + \gamma \max_{a'} q_{\pi^*}(s', a')] \tag{24} qπ??(s,a)=E[Rt+1?+amax?qπ??(St+1?,a)St?=s,At?=a]=s,r?p(s,rs,a)[r+γamax?qπ??(s,a)](24)

DP算法通過將貝爾曼方程轉化為更新規則來推導。

2.5 策略評估(預測)

策略評估(也稱為預測)是指針對給定的策略 π \pi π,計算狀態價值函數 v π v_{\pi} vπ?的過程。它用于評估在任何狀態下遵循策略 π \pi π時的期望回報。狀態價值函數 v π ( s ) v_{\pi}(s) vπ?(s)定義為從狀態 s s s開始并隨后遵循策略 π \pi π所得到的期望回報:

v π ( s ) = E π [ ∑ k = 0 ∞ γ k R t + k + 1 | S t = s ] v_{\pi}(s) = \mathbb{E}_{\pi} \left[ \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} \,\middle|\, S_t = s \right] vπ?(s)=Eπ?[k=0?γkRt+k+1? ?St?=s]

可以將其遞歸表示為:

v π ( s ) = E π [ R t + 1 + γ v π ( S t + 1 ) | S t = s ] = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] v_{\pi}(s) = \mathbb{E}_{\pi} \left[ R_{t+1} + \gamma v_{\pi}(S_{t+1}) \,\middle|\, S_t = s \right] = \sum_{a} \pi(a \mid s) \sum_{s', r} p(s', r \mid s, a)\,\bigl[r + \gamma\,v_{\pi}(s')\bigr] vπ?(s)=Eπ?[Rt+1?+γvπ?(St+1?)St?=s]=a?π(as)s,r?p(s,rs,a)[r+γvπ?(s)]

在上述方程中, π ( a ∣ s ) \pi(a \mid s) π(as)表示在策略 π \pi π下,在狀態 s s s時選擇動作 a a a的概率。只要 γ < 1 \gamma < 1 γ<1,或者在策略 π \pi π下所有回合都能夠最終結束, v π v_{\pi} vπ?就能被保證存在且唯一。動態規劃(DP)算法的更新通常被稱為“期望更新”,因為它們會考慮所有可能的后續狀態,而不僅僅是基于單個采樣進行更新。

參考文獻:https://arxiv.org/pdf/2408.07712
僅供學習使用,如有侵權,聯系刪除

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75977.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75977.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75977.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32單片機入門學習——第22節: [7-2] AD單通道AD多通道

寫這個文章是用來學習的,記錄一下我的學習過程。希望我能一直堅持下去,我只是一個小白,只是想好好學習,我知道這會很難&#xff0c;但我還是想去做&#xff01; 本文寫于&#xff1a;2025.04.07 STM32開發板學習——第22節: [7-2] AD單通道&AD多通道 前言開發板說明引用解…

Python高階函數-filter

1. 基本概念 filter() 是Python內置的高階函數&#xff0c;用于過濾序列中的元素。它接收一個函數和一個可迭代對象作為參數&#xff0c;返回一個迭代器&#xff0c;包含使函數返回True的所有元素。 filter(function, iterable)2. 工作原理 惰性計算&#xff1a;filter對象是…

密碼學基礎——分組密碼的運行模式

前面的文章中文我們已經知道了分組密碼是一種對稱密鑰密碼體制&#xff0c;其工作原理可以概括為將明文消息分割成固定長度的分組&#xff0c;然后對每個分組分別進行加密處理。 下面介紹分組密碼的運行模式 1.電碼本模式&#xff08;ECB&#xff09; 2.密碼分組鏈接模式&…

Redlinux(2025.3.29)

1、將你的虛擬機的網卡模式設置為nat模式&#xff0c;給虛擬機網卡配置三個主機位分別為100、200、168的ip地址。(以nmtui命令為例) 2、測試你的虛擬機是否能夠ping通網關和dns&#xff0c;如果不能請修改網關和dns的地址。 首先打開虛擬網絡編輯器查看NAT設置里的網關IP&…

【PalladiumZ2 使用專欄 1 -- 波形 trigger 抓取詳細介紹】

文章目錄 Palladium Z2 OverviewPalladium 波形抓取Palladium 波形存放文件創建Palladium Trigger 斷點設置Palladium 加探針并 dumpPalladium 波形查看 Palladium Z2 Overview Cadence Palladium Z2 是 Cadence 推出的企業級硬件仿真加速平臺&#xff0c;旨在應對復雜 SoC 設…

Redisson分布式鎖:原理、使用

1. Redisson簡介 Redisson是一個基于Redis的Java客戶端庫&#xff0c;提供了豐富的分布式對象和服務&#xff08;如分布式鎖、信號量、Map等&#xff09;。其核心優勢在于??簡化分布式鎖的實現??&#xff0c;并解決了原生Redis分布式鎖的常見問題&#xff08;如死鎖、誤刪…

Java大廠面試題 -- JVM 優化進階之路:從原理到實戰的深度剖析(2)

最近佳作推薦&#xff1a; Java大廠面試題 – 深度揭秘 JVM 優化&#xff1a;六道面試題與行業巨頭實戰解析&#xff08;1&#xff09;&#xff08;New&#xff09; 開源架構與人工智能的融合&#xff1a;開啟技術新紀元&#xff08;New&#xff09; 開源架構的自動化測試策略優…

MySQL學習筆記(四)——DML和DQL

目錄 1. DML 1.1 添加數據 1.1.1 給指定字段添加數據 1.1.2 給全部字段添加數據 1.1.3 批量添加數據 1.2 修改數據 1.3 刪除數據 2. DQL 2.1 基本語法 2.2 基礎查詢 2.2.1 查詢多個字段 2.2.2 字段設置別名 2.2.3 去除重復記錄 2.3 條件查詢 2.4 聚合函數 2.5 …

DeepSeek-MLA

MLA 結構 需要緩存 KV 向量共用的壓縮隱特征K 向量多頭共享的帶位置編碼的向量 為什么帶有位置信息的 Q 向量來自于隱特征向量&#xff0c;而帶有位置的 K 向量來自于 H 向量且共享呢&#xff1f; 最好的方法肯定是從H向量直接計算并且不共享&#xff0c;但是會大大增加顯存使…

檢索增強技術RAG和向量數據庫技術的優勢和劣勢,應用范圍和價值

RAG 和向量數據庫在技術棧中處于不同層級&#xff0c;前者側重生成任務的準確性與動態性&#xff0c;后者專注檢索效率與擴展性。在實際應用中&#xff0c;二者常協同工作&#xff0c;但也可獨立服務于不同場景。企業需根據需求選擇&#xff1a;若需生成內容&#xff0c;RAG 是…

Python爬蟲教程013:使用CrawlSpider爬取讀書網數據并保存到mysql數據庫

文章目錄 3.8 CrawlSpider介紹3.9 CrawlSpider爬取讀書網案例3.9.1 創建項目3.9.2 定義要爬取的數據結構3.9.3 獲取數據3.9.4 保存數據到本地3.9.5 保存數據到mysql數據庫3.9.6 完整項目下載3.8 CrawlSpider介紹 CrawlSpider 是 Scrapy 框架中 最常用的高級爬蟲類之一,用于構…

Three.js 系列專題 5:加載外部模型

內容概述 Three.js 支持加載多種 3D 文件格式(如 GLTF、OBJ、FBX),這讓開發者可以直接使用專業建模軟件(如 Blender、Maya)創建的復雜模型。本專題將重點介紹 GLTF 格式的加載,并調整模型的位置和材質。 學習目標 理解常見 3D 文件格式及其特點。掌握使用 GLTFLoader 加…

P1006 [NOIP 2008 提高組] 傳紙條 題解

題目傳送門 前言 每次準備摸魚時都在這道題的界面。 今天有空做做&#xff0c;順便寫一波題解&#xff0c;畢竟估值蹭蹭往下跳。 雙倍經驗&#xff1a;P1004 [NOIP 2000 提高組] 方格取數&#xff0c;P1006 [NOIP 2008 提高組] 傳紙條。 題意簡述 現有一個 m m m 行 n …

LLM架構解析:長短期記憶網絡(LSTM)(第三部分)—— 從基礎原理到實踐應用的深度探索

本專欄深入探究從循環神經網絡&#xff08;RNN&#xff09;到Transformer等自然語言處理&#xff08;NLP&#xff09;模型的架構&#xff0c;以及基于這些模型構建的應用程序。 本系列文章內容&#xff1a; NLP自然語言處理基礎詞嵌入&#xff08;Word Embeddings&#xff09…

ffmpeg提取字幕

使用ffmpeg -i test.mkv 獲取視頻文件的字幕流信息如下 Stream #0:4(chi): Subtitle: subrip (srt) (default) Metadata: title : chs Stream #0:5(chi): Subtitle: subrip (srt) Metadata: title : cht Stream #0:6(jpn)…

Python設計模式:構建模式

1. 什么是構建模式 構建模式&#xff08;Builder Pattern&#xff09;是一種創建型設計模式&#xff0c;它允許使用多個簡單的對象一步步構建一個復雜的對象。構建模式通過將構建過程與表示分離&#xff0c;使得同樣的構建過程可以創建不同的表示。換句話說&#xff0c;構建模…

使用 VIM 編輯器對文件進行編輯

一、VIM 的兩種狀態 VIM&#xff08;vimsual&#xff09;是 Linux/UNIX 系列 OS 中通用的全屏編輯器。vim 分為兩種狀態&#xff0c;即命令狀態和編輯狀態&#xff0c;在命令狀態下&#xff0c;所鍵入的字符系統均作命令來處理&#xff1b;而編輯狀態則是用來編輯文本資料&…

GaussDB回調機制深度實踐:從事件驅動到系統集成

GaussDB回調機制深度實踐&#xff1a;從事件驅動到系統集成 一、回調機制核心概念 回調類型矩陣 二、核心實現技術棧 觸發器回調開發 sql -- 創建審計觸發器回調 CREATE OR REPLACE FUNCTION audit_trigger() RETURNS TRIGGER AS $$ BEGININSERT INTO audit_log (operati…

AI小白:AI算法中常用的數學函數

文章目錄 一、激活函數1. Sigmoid2. ReLU&#xff08;Rectified Linear Unit&#xff09;3. Tanh&#xff08;雙曲正切&#xff09;4. Softmax示例代碼&#xff1a;激活函數的實現 二、損失函數1. 均方誤差&#xff08;MSE&#xff09;2. 交叉熵損失&#xff08;Cross-Entropy&…

idea 打不開terminal

IDEA更新到2024.3后Terminal終端打不開的問題_idea terminal打不開-CSDN博客