एक SO-100 low-cost robot arm डेस्क पर, teleoperation और policy training के लिए सेट अप किया गया
DAggerSO-100Imitation LearningVLATeleoperation

SO-100 पर DAgger लूप चलाना VLA Policy के साथ

AY-Robots ResearchAugust 27, 202615 मिनट पढ़ने का समय

SO-100 आर्म पर एक मानव-gated DAgger राउंड का step-by-step विवरण: policy चलाएँ और record करें, जब गलत हो तो take over करें, run को correction के रूप में file करें, mixed dataset बनाएँ, और checkpoint से continue training करें। Leader arm न होने वाले लोगों के लिए keyboard और slider takeover path शामिल है, और चार गलतियाँ जो एक राउंड को worthless बना देती हैं।

आपकी policy चलती है। यह cube तक पहुँचती है, gripper को एक सेंटीमीटर जल्दी बंद करती है, और ऐसे चलती है मानो वह इसे पकड़ गई हो। कोई error नहीं होती, और training loss को देखने से इसकी व्याख्या नहीं होती। fix यह नहीं है कि समान demonstrations पर 20,000 और gradient steps लें। यह है कि अपना हाथ arm पर वहीं वापस रखो जहाँ गलत होता है, record करो कि तुमने इसके बजाय क्या किया, और अगली checkpoint को पुराने data plus इस correction पर train करो। यह एक DAgger round है, और यह है कि कैसे एक पर चलता है SO-100 एक vision-language-action policy के साथ।

सिद्धांत कहीं और है: क्यों dataset aggregation बिल्कुल काम करता है और क्या human gating इसके बारे में बदलता है। यह operating manual है, और यह मानता है कि एक trained checkpoint है, एक working camera set है, और एक arm है जो चलता है। नीचे दिए गए छह steps इस platform पर लागू किए गए loop हैं DAgger page of this platform, लेकिन sequence आपकी own scripts से भी same है।

संक्षेप में एक राउंड

  • Trained policy चलाएँ और record करें, run के task text के साथ rather than एक generic teleoperation label के।
  • जैसे ही behavior गलत हो तो take over करें: एक leader arm के साथ mirror handover, keyboard या sliders के बिना immediate और manual।
  • हर run को triage करें: इसे correction के रूप में file करें, इसे evaluation episode के रूप में रखें, या इसे discard करें।
  • Mix को हाथ से compose करो - original demonstrations plus corrections, episodes चुनो per source। कभी भी corrections alone पर train न करो।
  • Last checkpoint से continue training करो, और note करो कि किस checkpoint ने किस mix को produce किया।
  • जो number कहता है कि क्या round worthwhile था वह है intervention rate, training loss नहीं।

क्यों दूसरा राउंड सिर्फ अधिक data नहीं है

Behaviour cloning उन states पर train करता है जो एक human ने visit किए। Test time पर policy वह states visit करती है जो वह cause करती है, और छोटी action errors compound होती हैं states में जो कोई demonstration नहीं covered करता। Ross, Gordon और Bagnell ने इस failure को AISTATS 2011 के लिए formalize किया और इसका जवाब एक iterative algorithm के साथ दिया जो एक stationary deterministic policy को train करता है और, उनके reduction के तहत, उन state distribution के तहत well perform करना होता है जो यह induce करता है: current policy चलाएँ, expert को states label करने दो जो वह actually reach करता है, उन्हें dataset में add करो, retrain करो, repeat करो। Kelly et al. ने HG-DAgger के साथ query को practical बनाया, जहाँ human decide करता है कि कब control लें instead of states को label करने के बिना controls पकड़े; वे improve performance को report करते हैं दोनों DAgger और behaviour cloning के ऊपर एक simulated और एक real autonomous driving task पर। Human gating वह है जो loop को tolerable बनाता है एक desk arm पर - तुम अपना हाथ सिर्फ तभी move करते हो जब कुछ गलत हो रहा हो।

दो consequences ज्यादा matter करती हैं practice में theory से। Corrections साधारण demonstrations नहीं हैं: वे concentrate करती हैं bottleneck regions में जो Mandlekar et al. describe करते हैं, जहाँ एक छोटा deviation policy को states में drop करता है जो demonstrations ने कभी नहीं covered किए। और एक dataset जो सिर्फ इन hard parts से बनी है वह एक badly shaped dataset है - Belkhale, Cui और Sadigh argue करते हैं data side से कि state diversity हमेशा beneficial नहीं है, और कि action divergence और transition diversity together dataset quality को decide करते हैं। Mixed dataset एक compromise नहीं है, यह point है।

Round one से पहले इन्हें freeze करो

एक DAgger round एक policy को अपने against समय के साथ compare करता है। कुछ भी जो तुम change करते हो rounds के बीच जो dataset नहीं है वह comparison को meaningless बनाता है।

  • Camera positions और mounts, wrist camera सहित। एक clamp को loosen करो और तुमने observation distribution को change कर दिया है, policy को नहीं।
  • Exposure और white balance, अगर तुम्हारा capture stack तुम्हें उन्हें pin करने देता है। Auto-exposure drifting rounds के बीच एक slow, invisible domain shift है।
  • Arm calibration और servo zero positions। अगर तुम्हें recalibrate करना है, तो इसके पहले record किए गए सब कुछ को एक अलग dataset के रूप में treat करो।
  • Task text। हर VLA यहाँ इस पर condition करता है; mid-loop rewording करना एक different task है।
  • Lighting, table surface, object set। एक नया object एक नया experiment है, अगला राउंड नहीं।
  • Recording frame rate। Intervention rates को दो sampling rasters के साथ compare करना differences produce करता है जो raster से आती हैं।
Wrist camera optional furniture नहीं है

Hsu et al. ने एक hand-centric view को usual third-person view से compare किया और पाया कि eye-in-hand perspective consistently improve करता है training efficiency और out-of-distribution generalisation को, भले ही scene का कम देखता है। एक five-joint arm पर, gripper timing आमतौर पर वह है जो तुम्हारे corrections fix कर रहे हैं, और gripper timing वह है जो wrist view carry करता है।

Round, end to end

  1. 1
    Inference चलाएँ और record करें

    उस checkpoint के विरुद्ध run शुरू करो जिसे तुम improve करना चाहते हो, फिर recording को inference root में शुरू करो। इस तरह record किए गए यह run के own task text को inherit करता है, जो कि वह है जिस पर policy को train किया गया, rather than default teleoperation label के। Recording के बिना तुम failure को देख सकते हो लेकिन इस पर train नहीं कर सकते।

    bash
    # two calls, not one: the run, then its recording
    POST /inference/start      # model_id, and hf_repo_id = the checkpoint to drive
    POST /recording/start      # root=inference
    # root=inference also makes the recording inherit the run's task text
  2. 2
    जब गलत हो तो take over करो

    Take over दबाओ और input mode चुनो: leader arm, keyboard या sliders। Runner pause करता है, तुम correct करते हो, तुम hand back करते हो। Frames जो record किए जाते हैं जबकि तुम driving कर रहे हो वे automatically interventions के रूप में flagged होते हैं।

    bash
    POST /inference/takeover/start   # input = leader | keyboard | sliders
    POST /inference/takeover/nudge   # keyboard, relative delta per call
    POST /inference/takeover/set     # sliders, absolute target
    POST /inference/takeover/stop    # back to the policy
  3. 3
    Episodes को triage करो

    Per episode decide करो: file as correction, keep as evaluation, या discard करो। एक run जिसे policy बिना मदद के complete किया है वह evaluation data है।

  4. 4
    Correction dataset को sync करो

    Corrections एक local dataset per policy में collect होती हैं और automatic sync के माध्यम से cloud storage में जाती हैं। कुछ भी mixed में नहीं जाता जो तुमने वहाँ नहीं रखा।

  5. 5
    Mixed dataset को compose करो

    Original dataset को corrections के साथ combine करो, explicitly चुनते हुए episodes per source। Result उस point से एक ordinary dataset है।

    bash
    POST /training/datasets/compose
      sources  = [ original_dataset, korrekturen_<policy> ]
      episodes = explicit selection per source
  6. 6
    Checkpoint से continue training करो

    Mix को previous checkpoint से rather than base model से train करो। Note करो कि कौन सी checkpoint और कौन सा mix; इस pair के बिना round reproducible नहीं है।

    bash
    # field on the training job
    base_checkpoint = s3://ay-robots/checkpoints/<run>/<checkpoint>
    # the platform passes it to the training pod as BASE_CKPT_S3

Step 2 विस्तार में: take over करने के दो तरीके

एक leader arm के साथ

लीडर-फॉलोअर mode में leader-follower takeover दो arms के बीच एक handover है जो same pose में नहीं हैं। Take over दबाने से runner pause करता है और leader को follower के current pose पर drive करता है, तो कुछ भी jump नहीं करता जब torque transfer होता है। अगर यह alignment drive timeout होता है, तो तुम leader को manually align करते हो और release करते हो सिर्फ जब दोनों five degrees के भीतर हों। इसके बाद तुम normally teleoperate करते हो और action column record करता है जो तुमने commanded किया।

इस path के बारे में honest हो: alignment drive और torque handover loop का least tested part हैं real hardware पर। Handover को एक slow, harmless pose पर test करो इससे पहले कि तुम इस पर rely करो एक run में जिसकी तुम care करते हो। एक leader arm produce करता है smoothest corrections के तीनों modes में, और सबसे अधिक है जो mechanically गलत हो सकता है।

एक leader arm के बिना: keyboard और sliders

अधिकांश लोग जो यह पढ़ते हैं एक arm own करते हैं। यह enough है। Keyboard या slider input choose करो जिस moment तुम Take over दबाते हो, और takeover immediate और manual है - कोई दूसरा arm नहीं है align करने के लिए, तो कोई alignment step नहीं है। Follower अपना pose hold करता है और input का wait करता है।

Input modeArm कैसे move करता हैPer-call limit server द्वारा enforcedLocked जब
Leader armMirror, follower को leader के joint angles से drive करता हैइस mode में कोई nudge या set calls नहीं; mirror continuously follower goals लिखता हैकभी भी locked नहीं, और default है अगर कोई input mode नहीं दिया गया - लेकिन इसे एक दूसरा arm चाहिए; बिना leader id के takeover refuse किया जाता है
KeyboardRelative nudge per key press, takeover nudge endpoint को भेजाHard clamp at 2 degrees per joint, 4 degrees gripper के लिए409 के साथ rejected अगर takeover को leader mode में start किया गया
SlidersAbsolute target pose, takeover set endpoint को भेजाTarget की ओर सबसे अधिक 6 degrees travel per call; interface लगभग दस बार एक second भेजता है409 के साथ rejected अगर takeover को leader mode में start किया गया

Clamps server-side enforce किए जाते हैं, interface में नहीं, क्योंकि एक mistyped delta एक bus-servo arm पर एक collision है। Keyboard corrections stepwise निकलते हैं और slightly coarse; slider corrections smoother हैं, क्योंकि server target की ओर चलता है जबकि interface stream करना रखता है। किसी भी तरह से action column को full commanded pose vector मिलता है और intervention marking leader path के समान है, तो keyboard corrections एक format difference के बिना same dataset में land करती हैं।

text
Q / A   joint 1      R / F   joint 4
W / S   joint 2      T / G   joint 5
E / D   joint 3      Z / X   gripper
Same key layout stack में कहीं और, तो recording से muscle memory carry over करता है।
Training guide showing SO-100 dataset पर GR00T fine-tuning run के ordered steps
Round का training side एक first run के समान guided sequence है; सिर्फ checkpoint field अलग है।

कब button दबाएँ

Late के बजाय early। एक correction जो gripper के closed होने के बाद start होता है nothing पर teaches recovery एक failure से जो policy को enter नहीं करना चाहिए था, और recovery data worthless होता है avoidance data से। Interrupt करो first moment जब तुम confident हो कि trajectory गलत है, correct करो difficult part के through, hand back करो as soon as state एक है जो policy ने handle किया था। ThriftyDAgger automates करता है यह decision को novelty गating करके interventions पर और एक fixed human budget के तहत estimated risk, लेकिन एक single arm पर एक human के साथ पहले से watching, human gate cheaper है और better calibrated है than कुछ भी जो तुम tune करोगे।

Open-source stack के साथ doable और कुछ scripts। यह क्या cost करता है वह है bookkeeping, और bookkeeping है जहाँ DAgger rounds die करती हैं।

  1. अपने own inference script से frames write करो एक LeRobot dataset में, policy के साथ जिस पर task string को train किया गया था।
  2. Policy loop को pause करो, command source को switch करो, और हर frame जिसे तुम drive करते हो को एक intervention के रूप में flag करो। Flag के बिना, corrections ordinary demonstrations की तरह दिखते हैं।
  3. Deliberately decide करो कि policy releasing control और तुम्हारे first input के बीच transition frames के साथ क्या होता है।
  4. Keep करो corrections अपने own dataset में per policy, और track करो episode indices हाथ से तो mix को reconstruct किया जा सकता है।
  5. Point करो fine-tuning entry point को previous checkpoint पर, और check करो log में कि यह weights को load करता है।

Step 3 विस्तार में: triage quality decide करता है

Run के बाद तुम्हारे पास एक recording है कुछ frames के साथ interventions के रूप में marked। तीन destinations exist करते हैं, और गलत एक quietly अगले round को poison करता है।

  • File as correction जब intervention एक genuine fix था: policy कहीं गलत जा रहा था और तुम्हारे input ने right thing दिखाया एक state से जो policy ने खुद produce किया।
  • Keep as evaluation clean autonomous runs के लिए और runs के लिए जो तुमने caution से take over किए। Evaluation episodes हैं कि कैसे तुम अगली checkpoint को measure करते हो, और वे कभी trained नहीं होने चाहिए।
  • Discard करो runs जो ruined हैं कुछ unrelated से - एक dropped camera frame, एक stalled servo, एक object जिसे तुमने knock over किया। एक messy correction no correction से worse है।
Freeze frames belong करते हैं raw recording में, training data में नहीं

Policy releasing control और तुम्हारे first input के बीच, arm hold करता है still जबकि recorder लिखना keep करता है - identical poses का एक run slightly different images के साथ paired। यहाँ वे handover frames stay करते हैं raw recording में और correction dataset से out। अगर तुम loop को खुद build करते हो, तो उन्हें deliberately cut करो: एक policy trained करता है उन पर learn करता है कि pause करे जहाँ उसे act करना चाहिए।

Step 5 विस्तार में: mix को compose करना

Composition original dataset को correction dataset के साथ लेता है और produce करता है एक नया, ordinary LeRobot dataset जो किसी अन्य की तरह train करता है। Important property यह है कि episode selection explicit है per source - कुछ भी automatically blend नहीं होता। यह minor लगता है जब तक पहली बार एक policy strangely behave नहीं करता और तुम्हें reconstruct करना पड़ता है कि यह किस पर train किया गया था।

Open question वह है ratio, और कोई भी एक number है जो transfer करता है। साहित्य सहमत है कि corrections अपने frame share के लिए अधिक count करने चाहिए। Mandlekar et al. iteratively retrain करते हैं data पर जो उनका intervention system collect करता है, तो policy learn करती है bottlenecks को traverse करने के लिए, और report करते हैं कि agents trained इस तरह outperform करते हैं agents trained को equivalent number के साथ samples से non-interventional demonstrators। Sirius further जाता है और re-weights करता है training samples by approximated human trust, reporting एक 8 percent gain simulation में और 27 percent real hardware पर policy success rate में methods के विरुद्ध जिनके साथ यह compares, convergence speed में double पर। कोई भी training entry points यहाँ expose नहीं करते एक sample-weighting knob, तो crude substitute original demonstrations को subsampling करना है जबकि every correction episode को keep करते हो - और लिखते हो कि तुमने क्या किया।

Dataset recording view showing episodes एक SO-100 dataset के साथ camera streams
Correction episodes ordinary episodes हैं एक per-frame intervention flag के साथ, तो वे original dataset के साथ compose करते हैं बिना conversion के।

Step 6 विस्तार में: checkpoint से continuing really क्या means करता है

Mix को base model से training करना काम करता है लेकिन previous round को throw away करता है और एक full run cost करता है। Previous से continuing करना checkpoint faster है और usually better है। यह भी more limited है जो phrase suggest करता है।

Weight initialisation नहीं है एक optimizer resume

एक weights-only checkpoint parameters रखता है और कुछ और नहीं। इसे loading करना अगले run को next checkpoint के लिए एक better starting point देता है base model से, लेकिन optimizer moments, learning-rate schedule position और data order सब zero से start होते हैं। एक loss spike की शुरुआत में expect करो, इसे एक failure के रूप में read न करो, और round को एक resume न कहो। यह एक warm start है।

PolicySizeGPU tierInference per action stepDataset formatEpisodes इससे पहले कि यह try करने लायक हो
GR00T N1.7लगभग 3 B, rough तरीके से 40 M fine-tuning के दौरान trainedA100 80 GB या H100 80 GBलगभग 152 msLeRobot v2.0 या v2.150
GR00T N1.5लगभग 3 BA100 80 GB या H100 80 GBलगभग 165 msLeRobot v2.0 या v2.150
Pi0.5लगभग 3 B एक PaliGemma backbone परA100 80 GB या H100 80 GBलगभग 485 msLeRobot v3.050
SmolVLAलगभग 450 MRTX 4090 या कोई भी 24 GB cardलगभग 245 msLeRobot v3.030
ACTलगभग 80 M, scratch से trainedRTX 4090 या कोई भी 24 GB cardलगभग 20 msLeRobot v3.050

Latency DAgger loop के अंदर compound करता है एक तरीके में जो demo के दौरान नहीं: लगभग 485 ms per action step पर तुम take over करते हो क्योंकि arm hesitated, गलत नहीं, और hesitation corrections useful training data नहीं हैं। अगर तुम data पर iterate कर रहे हो rather than final success rate को chase कर रहे हो, तो एक fast model पर iterate करो। Shukor et al. describe करते हैं SmolVLA को designed के रूप में एक single GPU पर train करने के लिए और deploy करने के लिए consumer GPUs या CPUs पर, एक asynchronous inference stack के साथ जो action prediction को execution से decouple करता है higher control rates को allow करने के लिए - property जो एक takeover loop को responsive रखता है।

Dataset formats interchangeable नहीं हैं या। GR00T लेता है LeRobot v2.0 या v2.1, और Isaac-GR00T repository describe करता है इसके input को एक flavour के रूप में LeRobot v2 format का एक added modality description file के साथ; newer trainers यहाँ expect करते हैं v3.0। एक mix composed गलत version में load time पर fail करता है rather than एक bad policy produce करने से - better failure mode, still एक wasted queue slot। dataset documentation lists करता है कौन सा format हर trainer लेता है।

Loop, bookkeeping के साथ पहले से ही done

Takeover एक leader arm, keyboard या sliders के साथ; per-frame intervention marking; runs को corrections या evaluations के रूप में filing; एक explicit episode selection के साथ mixed dataset compose करना per source; और एक checkpoint के बजाय base model से continue training करना। जो तुम्हारे decision में रहता है वह है कौन सा run एक correction के रूप में count करता है, क्या mix में जाता है, और कब intervention rate गिरना बंद हो गया है।

देखो कि कैसे DAgger loop wired है

Round को waste करने के चार तरीके

1. Corrections alone पर training करना

Most common failure और most tempting shortcut। एक correction-only dataset almost entirely difficult middle है task का, approach और retreat missing; policy बेहतर हो जाती है hard part पर और भूल जाती है कि कैसे वहाँ आना है। Aggregation एक implementation detail नहीं है method का, यह mechanism है: old data वह है जो rest को behavior में रखता है जबकि corrections एक part को move करते हैं।

2. Rounds के बीच एक camera move करना

एक camera जो दो centimeters shift करती है rounds के बीच एक policy produce करता है जो worse है जिस से तुम start किए, और एक diagnosis जो एक day cost करता है। हर VLA यहाँ conditions करता है images पर; joint state alone disambiguate नहीं करता जहाँ object है। पहली बार से पहले setup को photograph करो और check करो कि photograph को हर बाद में।

3. Handover artefacts को training में होने देना

ऊपर covered, और list पर क्योंकि यह invisible है। Symptom एक policy है जो stalls करती है एक fraction second exactly जहाँ previous round का operator take over करता है। यह hesitation की तरह दिखता है; यह imitation है।

4. एक warm start को एक resume कहना

अगर तुम believe करते हो कि optimizer state carry over किया, तो initial loss spike एक bug के रूप में read करता है और तुम corrupted data के लिए hunt करते हो। अगर तुम जानते हो कि optimizer fresh start किया, तो spike expected है और तुम देखते हो कि इसके बाद क्या आता है। Same numbers, opposite conclusions।

Round को measure करना

Human-gated loop के लिए metric वह है intervention rate: frames जो record किए जाते हैं जबकि तुम control में थे, divided by run के total frames से। यह takeover status में है, और यह एक ही number है जो question का answer देता है जो round ने पूछा। Training loss गिरता है चाहे policy improve हुई या नहीं; success rate binary है और noisy एक desk arm produce करता है sample sizes पर। Intervention rate continuous है, measured पर states जो policy ने खुद cause किया, और यह drops जैसे policy को तुम्हें कम जरूरत है।

इसे compare करो सिर्फ across runs जो identical conditions के तहत record किए गए हैं। Full argument, और कैसे एक evaluation set build करो जो दो rounds से ज्यादा survive करता है, में है the article on measuring a DAgger loop। Round one realistically एक feasibility test है: तुम check कर रहे हो कि takeover तुम्हारे hardware पर काम करती है, कि corrections अपने flags के साथ land करती हैं, और कि continued run checkpoint को load करता है जो तुमने named किया। Rounds two और three जहाँ rate को start moving करना चाहिए। अगर चौथे round तक move नहीं हुई है, तो problem DAgger के upstream है।

Per round write करोबाद में क्यों matter करता है
Checkpoint जो driven थाबिना इसके तुम एक improvement को एक mix से attribute नहीं कर सकते
Input mode used takeover के लिएKeyboard corrections leader corrections से coarser हैं, और यह data में दिखता है
Number of runs और कैसे हर एक को triagedक्या round में corrections matter करने के लिए enough था
Intervention rate per run, और meanLoop का progress metric
Exact episode selection per sourceReproduce या undo करने का एक ही तरीका एक round
Warm start या fresh trainingLoss curve को explain करता है जिसे तुम एक week में देखोगे

अगर तुम्हारे पास अभी कोई checkpoint नहीं है

Loop का कोई entry point नहीं है इसके बिना। एक first dataset record करो, एक first policy train करो, run करो - recording, training और running the policy वह path cover करते हैं। Recording client में है the download page, GPU tiers और hourly rates the pricing page पर, और क्या एक usable episode दिखता है SO-100 data collection guide में। Demonstrations को right करो corrections से पहले: DAgger एक repair mechanism है, और यह far better काम करता है कुछ ऐसा पर जो पहले ही nearly right था।

क्या मैं एक leader arm के बिना DAgger loop चला सकता हूँ?

हाँ। Take over दबाते समय keyboard या slider input choose करो: takeover immediate और manual है, दूसरे arm के बिना align करने के लिए। Keyboard relative nudges भेजता है जो server hard को clamp करता है 2 degrees per joint और 4 gripper के लिए; sliders एक absolute target भेजते हैं और server सबसे अधिक 6 degrees target की ओर move करता है per call, जबकि interface stream करना keep करता है। Action column और intervention marking leader mode के समान हैं, तो corrections dataset में indistinguishable हैं।

एक round को कितने corrections की जरूरत है?

कोई defensible universal number नहीं है, और frame count episode count से ज्यादा matter करता है। Working rule यह है कि corrections को mix में lost नहीं होना चाहिए: 200 original episodes के साथ और तीन correction episodes, कुछ भी move नहीं होगा। Aim करो corrections के लिए जो failing behaviour को cover करते हैं कई starting configurations से rather than same rescue के तीन repetitions।

क्यों केवल corrections पर training एक bad idea है?

क्योंकि corrections almost entirely task के hard middle हैं। Approach, alignment और retreat missing हैं, तो policy loses करती है जो वह पहले से ही अच्छी तरह से किया था जबकि part को improve करता है जिसे तुमने fix किया। Old data को keep करना और add करना mechanism ही है, optional extra नहीं।

क्या एक checkpoint से continue करना previous training run को resume करता है?

नहीं। एक weights-only checkpoint parameters को restore करता है और कुछ और नहीं: optimizer moments, learning-rate schedule position और data order fresh start होते हैं। यह एक warm start है, और एक initial loss spike expected है rather than symptom। Write करो कि तुमने actually क्या किया, तो तुम curve को एक week बाद correctly read करते हो।

अगर intervention rate नहीं गिरती तो क्या?

Rounds add करना बंद करो। एक flat rate मतलब है corrections नहीं सिखा रहे हैं जो तुम सोचते हो। Usual causes upstream हैं: एक camera move किया, corrections बहुत late start होते हैं avoidance data होने के लिए, handover frames training set में हैं, या task observations से underdetermined है जो policy actually gets।

कोई भी यह solved problem नहीं है और कोई भी यह एक click नहीं है। Interactive imitation learning एक active research area है precisely क्योंकि इसके questions - कब intervene करें, कैसे weight करें जो human ने किया, कितना old data keep करें - no settled answers हैं; Celemin et al. द्वारा survey maps करता है क्या still open है। जो loop को have है वह है measurable convergence जब यह carefully run होता है, hardware पर जो एक few hundred euros cost करता है। Setup को freeze करो, early intervene करो, honestly triage करो, deliberately mix करो, और intervention rate को हर बार record करो।

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started