深度强化学习(RL)介绍

深度强化学习(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.mzph.cn/pingmian/61739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Elasticsearch 构建食谱搜索(二)

这篇文章是之前的文章 “使用 Elasticsearch 构建食谱搜索(一)” 的续篇。在这篇文章中,我将详述如何使用本地 Elasticsearch 部署来完成对示例代码的运行。该项目演示了如何使用 Elastic 的 ELSER 实现语义搜索并将其结果与传统的词汇搜索进…

数据结构 【带环单链表】

在单链表中可能会存在一种情况,某一结点在经过几次转移之后回到了自己本身,这种情况就称之为带环链表。对于带环链表,我们不能轻易对其进行遍历,遍历可能会导致产生死循环。 带环链表的逻辑图如下所示:(这…

Vue 项目中如何使用FullCalendar 时间段选择插件(类似会议室预定、课程表)

本文中是基于VUEelementui项目中实现的前后端分离的前端功能部分: 插件的官方文档:FullCalendar 1.安装对应依赖(统一安装版本为6.15) npm install --save fullcalendar/core6.15 npm install --save fullcalendar/daygrid6.…

学习路之压力测试--jmeter安装教程

Jmeter安装 0、先安装jdk:这里是安装jdk-8u211-windows-x64 1、百度网盘上下载 jdk和jmeter 链接: https://pan.baidu.com/s/1qqqaQdNj1ABT1PnH4hfeCw?pwdkwrr 提取码: kwrr 复制这段内容后打开百度网盘手机App,操作更方便哦 官网:Apache JMeter - D…

SQL99版全外连接和交叉连接和总结

全外连接MySQL不支持 elect 查询列表 from 表名1 表别名1 cross join 表名2 表别名2 on 连接条件 ...... ; 交叉连接 就两个记录做笛卡尔积!没什么好说的,基本也没用过! 总结

Python爬虫:深入探索1688关键词接口获取之道

在数字化经济的浪潮中,数据的价值愈发凸显,尤其是在电商领域。对于电商平台而言,关键词不仅是搜索流量的入口,也是洞察市场趋势、优化营销策略的重要工具。1688作为中国领先的B2B电商平台,其关键词接口的获取对于商家来…

ffmpeg本地编译不容易发现的问题 — Error:xxxxx not found!

这里区分电脑CPU架构 本次编译是在Mac笔记本,M1芯片上进行! 前面大致流程:分为两种(1.仅适用,直接下载编译好的本地安装即可;2.使用并查看源码,自己修改编译运行)。这里介绍的是第…

从0-1逐步搭建一个前端脚手架工具并发布到npm

前言 本文介绍的案例已同步到github,github地址。 vue-cli 和 create-react-app 等 cli 脚手架工具用于快速搭建应用,无需手动配置复杂的构建环境。本文介绍如何使用 rollup 搭建一个脚手架工具。 脚手架工具的工作流程简言为:提供远端仓库…

摄影:相机控色

摄影:相机控色 白平衡(White Balance)白平衡的作用: 白平衡的使用环境色温下相机色温下总结 白平衡偏移与包围白平衡包围 影调 白平衡(White Balance) 人眼看到的白色:会自动适应环境光线。 相…

键盘党福音!自定义指令实现回车快捷删除

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 目录 确认对话框 回车键快捷确认 自定义指令实现回车删除 实现思路 实现代码 …

AG32既可以做MCU,也可以仅当CPLD使用

Question: AHB总线上的所有外设都需要像ADC一样,通过cpld处理之后才能使用? Reply: 不用。 除了ADC外,其他都是 mcu可以直接配置使用的。 Question: DMA和CMP也不用? Reply: DMA不用。 ADC/DAC/CMP 用。 CMP 其实配置好后,可以直…

深度学习实战人脸识别

文章目录 前言一、人脸识别一般过程二、人脸检测主流算法1. MTCNN2. RetinaFace3. CenterFace4. BlazeFace5. YOLO6. SSD7. CascadeCNN 三、人脸识别主流算法1.deepface2.FaceNet3.ArcFace4.VGGFace5.DeepID 四、人脸识别系统实现0.安装教程与资源说明1. 界面采用PyQt5框架2.人…

macOS 的目录结构

文章目录 根目录 (/)常见目录及其用途示例目录结构注意事项根目录 (/)主要目录及其含义其他目录总结 macOS 的目录结构无论是在 Intel 架构还是 ARM 架构的 Mac 电脑上都是相同的。macOS 的目录结构遵循 Unix 和 BSD 的传统,具有许多标准目录。以下是一些主要目录及…

003 STM32基础、架构以及资料介绍——常识

注: 本笔记参考学习B站官方视频教程,免费公开交流,切莫商用。内容可能有误,具体以官方为准,也欢迎大家指出问题所在。 01什么是STM32(宏观) STM32属于一个微控制器,自带了各种常用通…

aws凭证(一)凭证存储

AWS 凭证用于验证身份,并授权对 DynamoDB 等等 AWS 服务的访问。配置了aws凭证后,才可以通过编程方式或从AWS CLI连接访问AWS资源。凭证存储在哪里呢?有以下几个方法: 一、使用文件存储 1、介绍 文件存储适用于长期和多账户配置…

力扣面试经典 150(上)

文章目录 数组/字符串1. 合并两个有序数组2. 移除元素3. 删除有序数组中的重复项4. 删除有序数组的重复项II5. 多数元素6. 轮转数组7. 买卖股票的最佳时机8. 买卖股票的最佳时机II9. 跳跃游戏10. 跳跃游戏II11. H 指数12. O(1)时间插入、删除和获取随机元素13. 除自身以外数组的…

聚焦AI存储,联想凌拓全力奔赴

【全球存储观察 | 科技热点关注】 每一个时代,都有每一个时代的骄傲。 在信息化时代,NAS文件存储肩负着非结构化数据管理与存储的重任,NetApp以其创新实力,赢得了全球存储市场的极高声誉。 在数智化时代,…

JavaWeb后端开发知识储备2

目录 1.HttpClient 2.微信小程序开发 3.Spring Cache 1.HttpClient 简单来说,HttpClient可以通过编码的方式在Java中发送Http请求 2.微信小程序开发 微信小程序的开发本质上是前端开发,对于后端程序员来说了解即可 3.Spring Cache Spring Cache 是…

基于CNN+RNNs(LSTM, GRU)的红点位置检测(pytorch)

1 项目背景 需要在图片精确识别三跟红线所在的位置,并输出这三个像素的位置。 其中,每跟红线占据不止一个像素,并且像素颜色也并不是饱和度和亮度极高的红黑配色,每个红线放大后可能是这样的。 而我们的目标是精确输出每个红点的…