深度强化学习(RL)介绍

server/2024/11/25 8:09:07/

深度强化学习(RL)介绍 写到了一半,图待后补

一、强化学习概述

(一)与监督学习对比及定义

强化学习不同于监督学习,在一些任务中数据标注困难,但机器可通过环境反馈知道结果好坏。强化学习是机器学习的一部分,可定义为寻找一个策略(函数),使智能体(Actor)在给定观察(Observation)时能选择最佳行动(Action),以最大化总奖励(Reward)。例如在玩太空侵略者游戏或围棋时,智能体根据游戏状态(观察)采取行动,如移动、射击(太空侵略者)或落子(围棋),游戏结束时根据结果获得奖励(如消灭外星人得分、赢得围棋比赛得 1 分等)123。

(二)强化学习中的关键要素

  1. 智能体(Actor):根据观察决定采取何种行动,其行动影响环境状态和后续奖励,如在游戏中玩家控制的角色。
  2. 环境(Environment):智能体所处的场景,其状态会因智能体的行动而改变,如游戏的画面、棋盘状态等。
  3. 奖励(Reward):对智能体行动的反馈,用于引导智能体学习最优策略,如游戏中的得分、胜负结果等。

(三)强化学习的步骤

二、策略梯度(Policy Gradient)方法

(一)基本原理

策略梯度方法通过计算策略函数的梯度来更新参数,以最大化期望奖励。其训练数据是一系列的观察和行动,在每次训练迭代中,使用当前策略与环境交互收集数据,计算每个行动的优势(Advantage),优势表示行动相对于平均水平的好坏程度。然后根据优势计算损失函数,通过梯度下降更新策略网络参数91110。

(二)不同版本及改进

(三)策略梯度的问题及解决

  1. 数据收集与更新问题:在策略梯度中,每次更新模型参数后,需要重新收集整个训练集,计算成本高。为解决此问题,引入了离线策略(Off - policy)方法,如近端策略优化(PPO),允许使用旧策略收集的数据训练新策略,提高了数据利用率,但离线策略方法中训练的智能体需要知道其与交互智能体的差异121314。
  2. 探索与利用平衡问题:智能体在训练过程中需要在探索新行动和利用已有的良好行动之间进行平衡。如果智能体总是选择当前认为最优的行动,可能会错过更好的策略;如果过于随机地探索,又会降低学习效率。通过在数据收集时增加随机性(如添加噪声、扩大输出熵等),可以鼓励智能体探索更多可能性15。

三、演员 - 评论家(Actor - Critic)方法

(一)评论家(Critic)的定义与作用

评论家用于评估给定智能体策略下观察(状态)的好坏程度,其价值函数表示使用策略时,在观察到状态后预期获得的折扣累积奖励。例如在游戏中,评论家可以根据当前游戏状态评估智能体的策略是否良好16。

(二)价值函数的估计方法

四、奖励塑造(Reward Shaping)

(一)稀疏奖励问题

在许多任务中,如机器人拧螺丝,大多数情况下奖励为 0,智能体难以判断行动的好坏,导致学习困难212022。

(二)解决方法

  1. 定义额外奖励:开发者手动定义额外奖励来引导智能体学习,如在 VizDoom 游戏中,对生命值增加、弹药拾取等给予正奖励,对生命值减少、弹药消耗等给予负奖励,同时对智能体的移动和停留也给予相应奖励或惩罚2324。
  2. 好奇心驱动的探索(Curiosity):当智能体看到新的(但有意义的)事物时给予额外奖励,鼓励智能体探索未知环境,提高学习效率2526。

五、无奖励学习:从示范中学习(Learning from Demonstration)

(一)动机

在一些任务中定义奖励困难,且手工设计的奖励可能导致智能体行为不受控,如在机器人遵循机器人三定律时,可能出现为了保护人类整体而牺牲部分人类的情况2728。

(二)方法

  1. 模仿学习(Imitation Learning)
    • 行为克隆(Behavior Cloning):类似于监督学习,使用专家的示范数据(轨迹)训练智能体,让智能体模仿专家的行为。但存在问题,专家的示范数据有限,智能体可能复制无关行为。例如在自动驾驶中,仅记录人类驾驶员的有限行为,智能体可能无法应对未见过的情况293031。
    • 逆强化学习(Inverse Reinforcement Learning):利用专家的示范轨迹,学习一个奖励函数,使得专家的轨迹比智能体的轨迹获得更高奖励。然后基于该奖励函数,通过强化学习找到最优智能体。其原理类似生成对抗网络(GAN),奖励函数相当于判别器,智能体相当于生成器,通过不断优化奖励函数和智能体策略,使智能体的行为接近专家行为323334。

参考影片

【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (一) – 增強式學習跟機器學習一樣都是三個步驟icon-default.png?t=O83Ahttps://www.youtube.com/watch?v=XWukX-ayIrs

【机器学习2021】概述增强式学习 (Reinforcement Learning, RL) (一) – 增强式学习跟机器学习一样都是三个步骤icon-default.png?t=O83Ahttps://app.youtubesummarized.com/r/Zfu5B-OpeKvdizOfx-E-7

课程介绍与目的 00:06

"今天这堂课的目的不是要告诉你有关强化学习的所有知识,而是让大家对强化学习有一个基本的认识。"

  • 这堂课将专注于强化学习(Reinforcement Learning, RL)。强化学习是一个相对响亮且前沿的技术,尤其在像AlphaGo等应用中起到了关键作用。
  • 本次课程的目的是让学生了解强化学习的基本概念,而不是详细讲述所有技术细节。这是一个涉及范围广泛的主题,甚至可以形成整个学期的课程。
  • 网上有大量关于强化学习的资源,但本课程会努力避免过于理论化的内容,希望让学生觉得强化学习其实是可以掌握的。

强化学习与监督学习的区别 01:29

"在强化学习中,我们不知道最佳的输出应该是什么,这使得它与监督学习有很大的不同。"

  • 在现在所讲的技术中,多数是基于监督学习,这种方法需要明确的输入和相应的标签输出以进行训练。举例来说,在影像分类中,需要清楚告诉机器如何根据输入影像决定输出。
  • 不同于监督学习,强化学习中我们面临无法获知最佳解的情形,例如在围棋的情境中,机器可能无法判断最佳落子的时机和位置。
  • 强化学习的核心在于机器与环境的互动,通过获取奖励(Reward)来学习,其中奖励的获取依赖机器的行为。

强化学习的基本架构 04:21

"强化学习中的Actor就是一个函数,这个函数的输入是环境的观测,输出则是要采取的行为。"

  • 强化学习包含一个Actor(行为者)和一个环境,Actor通过从环境获取观测来决定输出行为(Action)。
  • 环境会根据Actor的行为产生新的观测,有时还会给予其一个奖励,以评估行为的好坏。
  • 最终,我们希望找到的函数(Actor)能在互动中最大化获得的奖励总和。

范例:太空入侵者游戏中的强化学习 07:18

"在太空入侵者游戏中,Actor必须学习如何获得最高的分数,这直接关联到获得的奖励。"

  • 以太空入侵者的游戏为例,Actor的行为包括向左移、向右移及开火,这些行为将影响其在游戏中的表现。
  • 每当Actor成功击中外星人时,会获得相应的分数,而这些分数就是奖励。Actor需要透过观察获得的回馈不断学习,调整其行为以获得更高的奖励。
  • 对于围棋这类较复杂的游戏,Actor和环境的互动会更为多样,奖励主要来自游戏的最终结果,例如赢或输,但在过程中获得的回馈可能是零。

获得奖励与游戏结束的条件 20:45

和你的 Actor 就得到 Reward,这个 Reward 的分数呢是 5 分。

  • 在这个过程中,当机器(Agent)和环境互动时,机器会执行行为并获得相应的奖励。每个行为可能带来不同的分数,这些分数通过回馈的方式逐步累积。
  • 每次获得奖励后,新的游戏画面会显示出来,并且机器会根据当前情况采取新的行为。这种交互会一直持续,直至游戏结束。

那什么时候游戏结束呢,就看你游戏结束的条件是什么嘛。

  • 游戏结束的时间取决于事先设定的结束条件。例如,当玩家最后一次行为导致飞船被敌人的子弹击中时,或是成功击杀了所有敌人,这时游戏就宣告结束。

总奖励与回报的概念 21:31

那从游戏开始到结束的这整个过程啊,被称之为一个 Episode。

  • 从游戏的开始到结束,每个行为的奖励都会被计算在内,整场游戏的奖励总和称为总奖励(Total Reward)。这个奖励来自于第一行为的获得奖励开始,一直到游戏结束的时候最后一个行为的获得奖励。

总奖励就是我们想要去最大化的东西,这就是我们训练的目标。

  • 对于强化学习(Reinforcement Learning, RL)而言,我们的目标是最大化这个总奖励,这意味着我们需要找到能产生最多奖励的策略。值得注意的是,总奖励可以被视为回报(Return),而回报是透过将所有奖励相加而得,两者的概念有所区别。

强化学习中的损失与奖励的关系 22:50

在 RL 的这个情境下,我们把那个 Total Reward 的负号,负的 Total Reward,就当做我们的 Loss。

  • 在强化学习中,总奖励是希望达到的效果,而损失则是需要最小化的量。换句话说,若总奖励越大,我们希望负的总奖励越小,这样便能够有效地定义出我们的损失函数。

所以 RL 真正的难点就是我们怎么解这一个 Optimization 的问题。

  • 强化学习的挑战在于如何解决这个优化问题,找到参数以产生最大的奖励。此外,强化学习的环境通常是不透明的(如:一个黑箱),这使得理解和预测其行为变得更加复杂。

行为训练的基本概念 40:43

训练一个Actor需要收集动作与状况资料。

  • 在训练一个Actor之前,首先需要搜集大量的训练资料来决定在不同状态下的最佳行为。例如,当在状态s1时,我们可能希望采取行为a^1,而在状态s2时则不希望采取行为a^2。
  • 这个过程类似于训练图像分类器,所以可以用图像作为例子来理解状态和行为的关系。状态(s)可以想成是图像,而行为(a^)就像是其标签(label),在这里有些行为希望被采取,有些则希望不被采取。

定义损失函数以进行训练 41:35

利用损失函数来训练Actor使其行为符合预期。

  • 收集完资料后,我们需要定义一个损失函数来评估行为的表现,接着就可以开始训练Actor,以最小化这个损失函数。
  • 训练的目标是使Actor能够执行我们所期待的行为。不仅如此,行为的评价也可以随着情况的不同而有所不同,例如,有的行为可能是非常好的,而有些可能只是「建议执行」。

多元行为评分 42:05

每个状态-行为对应的分数可以代表如希望的执行程度。

  • 在这个训练过程中,我们可以为每一个状态和行为的对应组合定义一个分数,这个分数展现了我们希望Actor在某种情况下执行某一行为的程度。例如,对于状态s1与行为a^1,我们可能给予一个正值的高分,表示我们强烈期待Actor采取该行为,而对于不希望采取的行为则给予低分或负值。
  • 这样的方式让损失函数不再只是二元的好或坏,而是更加细致地反映出不同情况之下应该执行的行为强度。

训练Actor的挑战 44:13

确定有效的状态与行为对是训练中的关键挑战。

  • 虽然有了损失函数和分数的设计,接下来仍需要解决一个挑战:如何准确地定义状态与行为的对应关系。这涉及到在不同情况下,何时应该执行某个行为或不执行。
  • 这个问题的解决将决定Actor执行行为的正确性和有效性。

【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (二) – Policy Gradient 與修課心情icon-default.png?t=O83Ahttps://app.youtubesummarized.com/r/grB1Tx1oJVZNSDvethBzk

演算法與行為評估概念 03:38

"希望 Actor 做 A1 的話,會有正的分數。"

  • 在這段課程中,老師講解了 Actor 在進行行動時所應該獲得的分數,并提出了如何評價每個行動的方法。當 Actor 執行動作 A1 並獲得正向回饋時,意味著這個行動是好的,根據這種邏輯,只要在未來再次面對同樣的情境,Actor 就應該選擇相同的行動。
  • 通過獲得的獎賞來評價過去的行為,能力在於觀察行動後的結果,並根據這些結果適當地更新 Actor 的選擇。在整個過程中,評價的標準將由段落中的每一次獲得的獎賞進一步推導,打算最大化所有選擇的總獎賞。

知識與環境互動的重要性 03:56

"我們在跟環境互動的時候,有一個問題叫做獎賞延遲。"

  • 獎賞延遲的概念強調,短期行為的分數不一定反映其長期影響。因此,有時候必須犧牲短期的回報來達成更遠的目標。透過這種方式,Actor 能夠建立長期的計畫,而不是短視近利地只根據當下的獎賞做出決策。
  • 此外,舉例如下圍棋或是在 Space Invaders 中的分數來說明,某些動作可能在當下不會得到獎賞,但它們卻對未來的獲取獎賞至關重要。

縮放與標準化的必要性 20:00

"好或壞是相對的。"

  • 在過程中,老師討論到了標準化獎賞的必要性,指出當每一個行動都能獲得正獎賞時,如何去區分真正好的和不好的行動變得困難。
  • 當一系列行動的結果回報都是正的時,可能會誤導演算法去重複這些行為。因此,設立基準線(Baseline)減去獎賞的部分來確保分數的相對性,尤為重要。这将使得模型在评估时对那些真正对结果有贡献的行动给予更高的重视。

Reinforcement Learning的參數更新機制 24:21

參數更新的過程中,資料的收集是在每次訓練循環內進行的。

  • 在強化學習(RL)中,更新模型參數的流程包括計算梯度並乘以上學習率,接著使用這個梯度來更新模型。這意味著我們每次更新參數後,都必須重新收集資料。這讓強化學習的訓練過程變得相對耗時。
  • 與一般的訓練過程不同,傳統上我們會在循環外進行資料收集,而在強化學習中,資料的蒐集卻是在每次訓練循環中進行的。例如,如果你設定進行400次訓練更新,你就需要收集400次資料。這不僅耗時,也會使訓練變得更複雜。

為什麼需要重新收集資料 26:33

雖然從舊的參數收集的資料能夠用來更新,但不一定適合用於更新新的參數。

  • 在強化學習的過程中,即便資料是由舊的參數收集的,但它們不一定適合用來直接更新新的參數,因為參數的變化意味著對環境的反應也可能不相同。這就像是在下棋時,對於不同棋力的棋士,相同的行動可能會不同程度地好或不好。
  • 這樣的情況下,每次更新後,演演算法都需要重新收集資料,才能有效訓練更新後的模型。這就是為什麼強化學習的梯度下降演算法往往需要更多的計算時間和資源。

On-policy與Off-policy學習 31:31

On-policy學習使得被訓練的Actor和與環境互動的Actor相同,這樣能夠更好的保證學習效果。

  • 在強化學習中,On-policy學習的方式是使得訓練用的Actor和與環境互動的Actor保持一致,這樣可以確保從相同的行為和經驗中進行學習。這樣可以讓演算法更有效率地收集到符合當前模型的資料。
  • 相對而言,Off-policy學習則是將訓練的Actor和互動的Actor分開。這樣的方法可以使得模型能夠根據其他Actor與環境互動的經驗進行學習,這樣一來,模型就不必在每次更新後都重新收集資料,從而節省大量計算時間。

探索(Exploration)的重要性 35:05

Actor在行為選擇上所需的隨機性,對於訓練效果至關重要。

  • 在強化學習中,探索是非常關鍵的概念。當Actor在與環境互動時,必須有一定的隨機性,以便能夠嘗試多樣的行為來獲取不同的反饋。如果Actor一直使用相同的行為,它將無法評估其他行為的好壞。
  • 為了促進探索,開發者可以通過增加行為選擇的隨機性,來鼓勵Actor嘗試更多的行動。這可能包括擾動輸出的概率分佈,從而使Actor能夠嘗試一些低機率的行為,進而擴大行為的範圍,幫助其更全面地探索與環境的互動。

【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (三) - Actor-Criticicon-default.png?t=O83Ahttps://app.youtubesummarized.com/r/B4CvZMKb3Qh0vbwjzggxN

強化學習中的 Critic 概念 00:16

Critic 是用來評估 Actor 的好壞,並預測我們將獲得的回報。

  • Critic 的主要功能是評估目前 Actor 的表現,並預測在給定觀察下將會獲得的回報。當一個 Actor 已經存在時,其參數稱為 θ,Critic 將根據該 Actor 觀察到的狀態來判斷可能獲得的回報。
  • Critic 的類型多樣,有些僅根據遊戲畫面進行評估,而另一些會考慮到 Actor 所採取的行動。這樣的設計可以幫助確定在特定狀態和行動下,未來將得到的回報。
  • 一個具體的 Critic 實例是 Value Function,我們用 Vθ(S) 來表示。這個函數的輸入是當前的遊戲狀態,而輸出是一個標量,這個標量表示該 Actor 在該狀態下未來獲得的折扣累積獎勵。
  • Vθ(S) 中的上標 θ 代表著它所觀察的 Actor,其輸出會根據 Actor 的性能而有所不同。也就是說,相同的狀態在不同的 Actor 前可能得到不同的評價。

兩種 Critic 訓練方法的介紹 06:23

借助於 Monte Carlo 和 Temporal-Difference 方法,可以有效地訓練出 Value Function。

  • 訓練 Critic 有兩種常見方法:Monte Carlo(MC)和 Temporal-Difference(TD)。MC 方法透過讓 Actor 與環境互動獲得數據,並在遊戲結束時基於整體獲得的獎勵來更新 Value Function。這種方法直觀,但需要完整遊戲進行才能獲得訓練資料。
  • 而 TD 方法則不必等待玩完一整場遊戲,只需根據某一觀察到的狀態和行為的當前獎勵以及其後的狀態上進行更新,這樣更具時效性,特別適合長時間或無結束的遊戲。
  • 每種方法有其適用情境,MC 更適合短期完整回合的評估,而 TD 則在遊戲常態上更靈活且效率高。

Action 的獲取與期望 22:37

"每次取樣的行動並不保證一定相同,因此可能性和最終的累積回報會有所變化。"

  • 每次執行取樣 (Sample) 得到的行動 (Action) 可能會有不同的結果,不一定是相同的。根據當前狀態 St,我們可以產生多種行為,並計算它們所帶來的不同累積獎勵 (Cumulative Reward)。
  • 若考慮折扣 (Discount),則會計算折扣後的累積收益,但在這個部分,我們暫時省略不提。無論如何,主要概念是理解不同可能性的平均計算 Vθ(St) 的意義。
  • Gt' 代表的是在當前狀態 St 進行動作 At 後能獲得的未來累積獎勵。執行 At 後,我們將持續進行遊戲,最終得到某個可觀察的獎勵。

評估動作的好壞 23:42

"當 At 大於 0 時,顯示這個行動比隨機取樣的行為還要好。"

  • 當 At 大於 0 時,表示 Gt' 大於 Vθ(St),這意味著行動 At 所帶來的獎勵超過隨機取樣的結果。
  • 若 At 小於 0,則意味著平均獎勵超過了 At 所得到的獎勵,表示這個動作是劣於隨機行動的。因此,決定是否繼續使用該行動是基於這一比較,直觀地表明了其好壞。

Advantage Actor-Critic 方法 27:55

"在 Advantage Actor-Critic 方法中,我們定義 At 為 rt + Vθ(St+1) 減去 Vθ(St)。"

  • Advantage Actor-Critic 方法通過比較行動所獲得的獎勵和平均值來衡量行動的效用。具體而言,我們將獎勵 rt 加上從下一狀態 St+1 的預期獎勵 Vθ(St+1),然後減去目前狀態 St 的預期獎勵 Vθ(St),以判斷當前行動的效果。
  • 這種方法的目的在於瞭解所採取的行動與隨機行動相比,能獲得的預期獎勵的差距。

Actor-Critic 網絡設計技巧 28:26

"Actor 和 Critic 網絡可以共用部分參數,尤其是前幾層。"

  • 在設計 Actor-Critic 網絡時,可以使用相同的輸入來共享前幾層的參數,這樣可簡化模型結構,並提高訓練效率。通常,前面幾層可能需要 CNN 來處理複雜的輸入,例如遊戲畫面。
  • Actor 網絡的輸出是對每個行動的評分,而 Critic 網絡則輸出對於後續獲得的累積獎勵的預期值,兩者的結構設計可以實現效能的最佳化。

【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (五) - 如何從示範中學習?逆向增強式學習 (Inverse RL)icon-default.png?t=O83Ahttps://app.youtubesummarized.com/r/mL_Q1OJ2FsojyH4tLbamU

強化學習中的獎勵問題 00:02

如果沒有獎勵,那我們該怎麼辦呢?

  • 影片討論了如果在強化學習中缺乏獎勵的情況,這會帶來哪些挑戰。在一般的強化學習中,獎勵是關鍵的指標,幫助我們評估智能體的行為是否正確。然而,獎勵有時可能是非常稀疏的,甚至在某些環境中,根本沒有獎勵可言。
  • 在虛擬環境中,如遊戲,獎勵易於定義,因為有明確的規則和記分板來評估行為。然而,在真實世界中,例如自駕車的情境,獎勵的定義變得複雜。如要獲得獎勵,行為如禮讓行人,應該給予多少分數、闖紅燈又應該扣多少分,這些都難以界定。
  • 影片引用了一部電影《機械公敵》的例子,說明獎勵的設定可能導致預期之外的行為。機器人若只遵循設定的獎勵規則,可能會得出不合乎人類倫理的結論,如把人類監禁以避免傷害,這顯示出獎勵的定義非常重要,僅有設定獎勵是不夠的。

模仿學習的應用 04:20

在缺乏獎勵的情況下,我們該如何訓練一個智能體讓其與環境互動?

  • 影片介紹了一種名為模仿學習(Imitation Learning)的技術,這種方式讓智能體在沒有獎勵的情況下仍然可以從環境中學習。與環境互動的同時,會收集到人類專家的行為示範,並用這些示範來進行學習。
  • 模仿學習的關鍵在於收集專家的互動資料,這些被稱為專家示範(Expert Demonstration),例如人類駕駛的記錄。智能體根據這些示範來學習如何在特定情境下行動。
  • 儘管模仿學習有其優勢,但也面臨挑戰,比如專家行為的表現過於優秀,智能體可能無法學習到失敗的處理方式,這會造成知識的漏洞。此外,智能體可能會全盤模仿人類的行為,而無法篩選出哪些是必要的行為。因此,僅僅模仿可能會影響學習效果。

機械手臂的訓練方法 19:25

「如果不是用強化學習來訓練機械手臂,可能會是什麼樣子呢?」

  • 機械手臂的訓練常常採用強化學習的方法。這種方式讓機器能夠透過不斷的嘗試與錯誤進行學習,而非僅僅依賴人類直接編寫的程式碼。
  • 在喜劇《宇宙大爆炸理論》中,有一段對話提到了"Wolowitz可程式手",該裝置設計用於國際太空站的太空行走修理工作,這展示了機械手臂的應用。
  • 雖然如同人類伸手取得東西是簡單的行為,但將這一行為程式化,以控制機械手臂的每一個關節,卻是相當困難的。

逆向強化學習的運用 21:02

「假設你今天想用編程的方式來操控一個機械手臂,這過程並不容易。」

  • 當面對需要複雜的機械手臂動作時,逆向強化學習(Inverse Reinforcement Learning)可以提供幫助。
  • 使用這項技術,研究者可以透過示範動作給機器觀察,讓機器學習如何執行相同的行為,以提高學習效率。
  • 透過這種示範學習,機器能夠了解人類示範的行為,並試著模仿,這樣可以提升其操作的靈活性與精準度。

未來的機械學習方法 23:25

「未來我們可能可以用示範的方法來教機器事情。」

  • 當前的技術還在不斷發展中,未來我們可以直接給機器一個圖像,讓它學習如何達到這個圖像中的目標。
  • 這種方法的基本概念是讓機器能夠根據目標圖像自我探索與學習,不僅限於使用模仿學習。
  • 為了能為機器提供更好的訓練,有研究者探討如何讓機器自我設置目標,並以此進行學習,這樣的過程類似於人類設定自我提升的目標。

http://www.ppmy.cn/server/144742.html

相关文章

【C++笔记】数据结构进阶之二叉搜索树(BSTree)

【C笔记】数据结构进阶之二叉搜索树(BSTree) 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】数据结构进阶之二叉搜索树(BSTree)前言一.二叉搜索树的概念二.二叉搜索树的性能分析三.二叉搜索树的实现3.1二叉树的中序…

删除maven仓库中的失败文件

删除maven仓库中的失败文件 创建一个 删除maven仓库中的失败文件.bit 文件,将下面内容复制进去就行 @echo off rem create by sunhao(sunhao.java@gmail.com) rem crazy coderrem 这里写你的仓库路径 set REPOSITORY_PATH=C:\Users\Administrator\.m2\repository rem 正在搜索.…

嵌入式硬件电子电路设计(五)MOS管详解(NMOS、PMOS、三极管跟mos管的区别)

引言:在我们的日常使用中,MOS就是个纯粹的电子开关,虽然MOS管也有放大作用,但是几乎用不到,只用它的开关作用,一般的电机驱动,开关电源,逆变器等大功率设备,全部使用MOS管…

【第三章】Python基础字节序列之编码、解码,ASCII与初始化

字节序列 Python3 引入两个新的类型bytes、bytearray。 bytes不可变字节序列;bytearray是可变字节数组。 编码与解码 编码:str > bytes,将字符串这个字符序列使用指定字符集encode编码为一个个字节组成的序列 bytes, str是python中使用…

哪个牌子猫用空气净化器好?质量好的猫用空气净化器推荐

哪个牌子猫用宠物空气净化器好?冬天一关窗户就家里下起了猫毛雨,谁叫我养了只掉毛猫,真是无法呼吸。养猫人真的太不容易了。后面我男朋友挑了好久,终于挑到一款实用的养猫家电好物。这回真不是智商税,过敏皮炎患者&…

el-table :span-method 合并单元格(2.0)

2024.11.23今天我学习了如何使用el-table组件的合并单元格方法&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; <template><div class"container"><el-table :data"table_data" :span-method"object_merge" border>&…

分布式数据库中间件可以用在哪些场景呢

在数字化转型的浪潮中&#xff0c;企业面临着海量数据的存储、管理和分析挑战。华为云分布式数据库中间件&#xff08;DDM&#xff09;作为一款高效的数据管理解决方案&#xff0c;致力于帮助企业在多个场景中实现数据的高效管理和应用&#xff0c;提升业务效率和用户体验。九河…

props.children的使用场景

props.children 是 React 中一个非常重要的特性&#xff0c;它用于访问组件的子元素。这些子元素可以是其他组件、字符串、数字、数组或者任何有效的 React 元素。props.children 是 React 提供的一种机制&#xff0c;使得父组件可以将其内容传递给子组件&#xff0c;并且子组件…