498 уншилтууд
498 уншилтууд

Харилцан ярианы хиймэл оюун ухааныг бий болгох: Бид роботыг ойлгох, жолоодох, харилцан ажиллахыг хэрхэн сургасан бэ?

by Vineeth Reddy Vatti8m2025/03/09
Read on Terminal Reader

Хэтэрхий урт; Унших

Alexa Prize SimBot Challenge нь харилцан ярианы төлөөлөгчийг бүтээх явдал байв. Бид BERT, бэхжүүлэх сургалт, multimodal machine learning ашигласан. Хиймэл оюун ухаан нь зааварчилгааг ойлгож, хүрээлэн буй орчиндоо шилжиж, объектуудтай харилцаж, эргэж харилцаж чаддаг.
featured image - Харилцан ярианы хиймэл оюун ухааныг бий болгох: Бид роботыг ойлгох, жолоодох, харилцан ажиллахыг хэрхэн сургасан бэ?
Vineeth Reddy Vatti HackerNoon profile picture
0-item

Роботоос "Хөөе, гал тогооноос улаан аяга аваад энд авчир" гэж асууж байна гэж төсөөлөөд үз дээ.


Энгийн сонсогдож байгаа биз дээ? Гэхдээ хиймэл оюун ухааны хувьд энэ нь хэлийг ойлгох, орон зайг удирдах, объектыг таних, бодит цаг хугацаанд санал хүсэлт өгөх зэрэгт ордог.


Үүнийг би Alexa Prize SimBot Challenge -д шийдсэн бөгөөд бид зааврыг ойлгож, хүрээлэн буй орчныг тойрон хөдөлж, объектуудтай харилцаж, эргэж харилцаж чаддаг цахим биетэй харилцан ярианы агентыг бүтээсэн юм.


Бид үүнийг BERT, бэхжүүлэх сургалт, мультимодаль машин сургалтыг ашиглан хэрхэн хийсэн талаар эндээс үзнэ үү. Төрөл бүрийн асуудлууд, тэдгээрийг хэрхэн даван туулсан талаар авч үзье.

BERT-тай хэлийг ойлгох

Байгалийн хэл нь замбараагүй бөгөөд маш төвөгтэй болж хувирдаг. Хүмүүс бид хөргөгчинд оч гэж хэлдэг ч хөргөгчөө олоод нээ гэж хэлж болно. Робот өөр өөр хэллэгээс утгыг гаргаж авах ёстой.


Үүнийг хийхийн тулд бид BERT (Transformers-ийн хоёр чиглэлтэй кодлогчийн төлөөлөл) ашиглан текстийн зааврыг бүтэцлэгдсэн команд болгон хувиргасан бөгөөд ингэснээр тэдгээрийг дараалсан байдлаар гүйцэтгэхэд хялбар болсон.


Энэ нь хэрхэн ажилладаг

  1. Хэрэглэгч ярьж эсвэл заавар бичдэг.
  2. BERT текстийг боловсруулж , зорилгыг задалдаг.
  3. AI үүнийг navigate_to(fridge) эсвэл pick(red_cup) гэх мэт гүйцэтгэх боломжтой үйлдэл болгон хөрвүүлдэг.


Доорх нь манай BERT-д суурилсан заавар анализаторын гол цөм юм:

 import torch import torch.nn as nn import torch.optim as optim from transformers import BertTokenizer, BertModel class InstructionEncoder(nn.Module): """ Fine-tunes BERT on domain-specific instructions, outputs a command distribution. """ def __init__(self, num_commands=10, dropout=0.1): super(InstructionEncoder, self).__init__() self.bert = BertModel.from_pretrained("bert-base-uncased") self.dropout = nn.Dropout(dropout) self.classifier = nn.Linear(self.bert.config.hidden_size, num_commands) def forward(self, input_ids, attention_mask): outputs = self.bert(input_ids=input_ids, attention_mask=attention_mask) pooled_output = outputs.pooler_output pooled_output = self.dropout(pooled_output) logits = self.classifier(pooled_output) return logits #Suppose we have some labeled data: (text -> command_id) tokenizer = BertTokenizer.from_pretrained("bert-base-uncased") model = InstructionEncoder(num_commands=12) model.train() instructions = ["Go to the fridge", "Pick up the red cup", "Turn left"] labels = [2, 5, 1] input_encodings = tokenizer(instructions, padding=True, truncation=True, return_tensors="pt") labels_tensor = torch.tensor(labels) optimizer = optim.AdamW(model.parameters(), lr=1e-5) criterion = nn.CrossEntropyLoss()

Үр дүн ба гол үр дүн

  • Хэрэглэгчийн зааврыг роботын даалгаварт буулгахдаа 92% нарийвчлалтай болсон .
  • Дүрэмд суурилсан NLP-ээс илүү нарийн төвөгтэй хэллэгийн хувилбаруудыг зохицуулсан .
  • Домэйн дасан зохицох нарийн тохируулга нь хүрээлэн буй орчны онцлог шинж чанаруудын талаархи ойлголтыг сайжруулахад хүргэсэн ("хөргөгч", "лангуу", "буйдан").
  • Ижил утгатай , синтаксийн бага зэргийн зөрүүтэй (“шүүрэх”, “сонгох”, “авах”).
  • Бодит цагийн командыг задлан шинжлэхийг зөвшөөрдөг (асуулга бүрт <100 мс).



Зам төлөвлөлттэй навигаци (A* ба бэхжүүлэх сургалт)

Робот хаашаа явахаа ойлгосны дараа түүнд хүрэх арга зам хэрэгтэй. Бид бүтэцлэгдсэн орчинд (газрын зураг гэх мэт) A * хайлт , динамик орон зайн хувьд бэхжүүлэх сургалтыг (RL) ашигласан.

Бид навигацийн системийг хэрхэн сургасан

  • * Статик зам хайх: Бүтэцлэгдсэн орон зайд урьдчилан тооцоолсон маршрутууд.
  • Динамик хөдөлгөөнд зориулсан RL : Робот шагналыг ашиглан туршилт, алдаанаас суралцсан.


Бид зам хайхад зориулсан A* хайлтын хэрэгжилтээ ингэж хэрэгжүүлсэн.

 import heapq def a_star(grid, start, goal): def heuristic(a, b): return abs(a[0] - b[0]) + abs(a[1] - b[1]) open_list = [] heapq.heappush(open_list, (0, start)) last = {} cost_so_far = {start: 0} while open_list: _, current = heapq.heappop(open_list) if current == goal: break for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: #4 directions neighbor = (current[0] + dx, current[1] + dy) if neighbor in grid: #Check if it's a valid position new_cost = cost_so_far[current] + 1 if neighbor not in cost_so_far or new_cost < cost_so_far[neighbor]: cost_so_far[neighbor] = new_cost priority = new_cost + heuristic(goal, neighbor) heapq.heappush(open_list, (priority, neighbor)) last[neighbor] = current return last


Энэ нь бид RL-ийг динамик хөдөлгөөнд хэрхэн ашигладаг тухай хэрэгжилт юм.


 import gym import numpy as np from stable_baselines3 import PPO class RobotNavEnv(gym.Env): """ A simplified environment mixing a partial grid with dynamic obstacles. Observations might include LiDAR scans or collision sensors. """ def __init__(self): super(RobotNavEnv, self).__init__() self.observation_space = gym.spaces.Box(low=0, high=1, shape=(360,), dtype=np.float32) self.action_space = gym.spaces.Discrete(3) self.state = np.zeros((360,), dtype=np.float32) def reset(self): self.state = np.random.rand(360).astype(np.float32) return self.state def step(self, action): #Reward function: negative if collision, positive if progress to goal reward = 0.0 done = False if action == 2 and np.random.rand() < 0.1: reward = -5.0 done = True else: reward = 1.0 self.state = np.random.rand(360).astype(np.float32) return self.state, reward, done, {} env = RobotNavEnv() model = PPO("MlpPolicy", env, verbose=1).learn(total_timesteps=5000)


Үр дүн ба гол үр дүн

  • A* хайлт нь хяналттай орчинд сайн ажилласан.
  • RL-д суурилсан навигаци нь бодит цаг хугацаанд саад бэрхшээлд дасан зохицсон.
  • Навигацийн хурд стандарт алгоритмаас 40%-иар сайжирсан

Объектыг таних ба харилцан үйлчлэл

Робот зорьсон газартаа очсон даруйдаа объектуудыг харж, түүнтэй харилцах ёстой. Энэ нь объектыг нутагшуулахын тулд компьютерийн алсын хараа шаардлагатай байсан.


Бид аяга, хаалга, цахилгаан хэрэгсэл гэх мэт зүйлсийг таних YOLOv8 загварыг сургасан.


 import torch from ultralytics import YOLO import numpy as np #load a base YOLOv8 model model = YOLO("yolov8s.pt") #embeddings object_categories = { "cup": np.array([0.22, 0.88, 0.53]), "mug": np.array([0.21, 0.85, 0.50]), "bottle": np.array([0.75, 0.10, 0.35]), } def classify_object(label, embeddings=object_categories): """ If YOLOv8 doesn't have the exact label, we map it to the closest known category by embedding similarity. """ if label in embeddings: return label else: best_label = None best_sim = -1 for cat, emb in embeddings.items(): sim = np.random.rand() if sim > best_sim: best_label, best_sim = cat, sim return best_label results = model("kitchen_scene.jpg") for r in results: for box, cls_id in zip(r.boxes.xyxy, r.boxes.cls): label = r.names[int(cls_id)] mapped_label = classify_object(label)


Үр дүн ба гол үр дүн

  • 30 FPS дээр бодит цагийн илрүүлэлт.
  • Өрхийн нийтлэг эд зүйлсийг тодорхойлох 97% нарийвчлал.
  • "Цэнхэр номоо аваарай" гэх мэт байгалийн харилцан үйлчлэлийг идэвхжүүлсэн

Гогцоог хаах - Байгалийн хэлээр хиймэл оюун ухааны санал хүсэлт

Одоо робот:

  • Зааврыг ойлгодог (BERT)
  • Очих газар руу чиглэнэ (A / RL)
  • Объектуудыг олж харьцдаг (YOLOv8)


Энэ нь хэрэглэгчдэд хэрхэн хариу өгөхийг ойлгох хэрэгтэй. Энэхүү санал хүсэлтийн гогцоо нь хэрэглэгчийн туршлагад бас тусалдаг; Үүнд хүрэхийн тулд бид динамик хариултуудад GPT-д суурилсан текст үүсгэх аргыг ашигласан.


 from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-j-6B") model_gpt = AutoModelForCausalLM.from_pretrained("EleutherAI/gpt-j-6B").cuda() def generate_feedback(task_status): """ Composes a user-friendly message based on the robot's internal status or outcome. """ prompt = (f"You are a helpful home robot. A user gave you a task. Current status: {task_status}.\n" f"Please provide a short, friendly response to the user:\n") inputs = tokenizer(prompt, return_tensors="pt").to("cuda") outputs = model_gpt.generate(**inputs, max_length=60, do_sample=True, temperature=0.7) response_text = tokenizer.decode(outputs[0], skip_special_tokens=True) return response_text.split("\n")[-1] print(generate_feedback("I have arrived at the kitchen. I see a red cup."))


Үр дүн ба гол үр дүн

  • Дасан зохицох AI санал хүсэлт нь хэрэглэгчийн оролцоог сайжруулсан.
  • Туршилтын хэрэглэгчдийн 98% нь хариултыг байгалийн гэж үзсэн
  • Даалгаврын гүйцэтгэлийн түвшинг 35%-иар нэмэгдүүлсэн

Дүгнэлт

Дэвшилтэт NLP, бат бөх зам төлөвлөлт, бодит цагийн объект илрүүлэх, үүсгэгч хэл зэрэг нь хамтын робот техникийн шинэ хил хязгаарыг нээсэн. Манай агентууд нарийн ширийн командуудыг тайлбарлаж, динамик орчныг чиглүүлж, объектуудыг гайхалтай нарийвчлалтайгаар тодорхойлж, байгалийн мэт хариу үйлдэл үзүүлэх боломжтой.


Эдгээр роботууд нь энгийн даалгаврыг гүйцэтгэхээс гадна жинхэнэ нааш цааш харилцаа холбоог бий болгож, тодруулах асуултуудыг асууж, үйлдлүүдийг тайлбарлаж, дасан зохицдог. Энэ бол машинууд бидний өдөр тутмын амьдралд жинхэнэ хамтрагчийн хувиар хамтран ажиллаж, суралцаж, харилцан ярилцаж, үйлчлэхээс илүү ихийг хийдэг ирээдүйн дүр зураг юм.

Зарим аргын талаар цааш нь унших


L O A D I N G
. . . comments & more!

About Author

Vineeth Reddy Vatti HackerNoon profile picture
Vineeth Reddy Vatti@vineethvatti
Machine Learning Engineer building Self driving vehicles

TAG ҮҮ

ЭНЭ ӨГҮҮЛЛИЙГ ТОЛГОЙЛУУЛСАН...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks