ایک روبوٹ سے پوچھنے کا تصور کریں: "ارے، کچن سے لال کپ اٹھاؤ اور اسے یہاں لے آؤ۔"
سادہ لگتا ہے نا؟ لیکن AI کے لیے اس میں زبان کو سمجھنا، کسی جگہ کو نیویگیٹ کرنا، اشیاء کو پہچاننا، اور فیڈ بیک فراہم کرنا شامل ہے۔
یہ بالکل وہی ہے جو میں نے Alexa Prize SimBot چیلنج میں کیا جہاں ہم نے ایک ای باڈیڈ بات چیت کرنے والا ایجنٹ بنایا جو ہدایات کو سمجھ سکتا ہے، اس کے ماحول سے گزر سکتا ہے، اشیاء کے ساتھ بات چیت کرسکتا ہے، اور واپس بات چیت کرسکتا ہے۔
یہاں یہ ہے کہ ہم نے اسے BERT، کمک سیکھنے، اور ملٹی موڈل مشین لرننگ کا استعمال کرتے ہوئے کیسے بنایا۔ آئیے مختلف مسائل سے گزرتے ہیں اور ہم نے ان میں سے ہر ایک سے کیسے نمٹا۔
BERT کے ساتھ زبان کو سمجھنا
قدرتی زبان گندا ہے اور بہت پیچیدہ ہو سکتی ہے۔ ہم انسان کہتے ہیں کہ فریج پر جاؤ لیکن یہ بھی کہہ سکتے ہیں کہ فریج ڈھونڈو اور کھولو۔ ایک روبوٹ کو مختلف فقروں سے معنی نکالنا چاہیے۔
ایسا کرنے کے لیے، ہم نے BERT (ٹرانسفارمرز سے دو طرفہ انکوڈر ریپریزنٹیشنز) کا استعمال کیا تاکہ ٹیکسٹ ہدایات کو سٹرکچرڈ کمانڈز میں تبدیل کیا جا سکے، تاکہ اس کے لیے ترتیب وار طریقے سے ان پر عمل کرنا آسان ہو۔
یہ کیسے کام کرتا ہے۔
- صارف کوئی ہدایات بولتا یا ٹائپ کرتا ہے۔
- BERT متن پر کارروائی کرتا ہے اور ارادے کو نکالتا ہے۔
- 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 سے بہتر جملے کی مختلف حالتوں کو سنبھالا ۔
- ڈومین کے موافق فائن ٹیوننگ نے ماحول سے متعلق مخصوص اصطلاحات ("فریج"، "کاؤنٹر"، "سوفا") کی بہتر تفہیم کا باعث بنا۔
- مترادفات اور معمولی نحوی فرقوں کے لیے مضبوط ("گراب"، "چناؤ"، "لے")۔
- حکموں کی حقیقی وقت میں تجزیہ کرنے کی اجازت ہے (<100ms فی سوال)۔
راستے کی منصوبہ بندی کے ساتھ نیویگیشن (A* اور کمک سیکھنا)
ایک بار جب روبوٹ سمجھ جاتا ہے کہ کہاں جانا ہے تو اسے وہاں جانے کے لیے راستے کی ضرورت ہے۔ ہم نے ساختی ماحول کے لیے A * تلاش (جیسے نقشے) اور متحرک جگہوں کے لیے Reinforcement Learning (RL) کا استعمال کیا۔
ہم نے نیویگیشن سسٹم کی تربیت کیسے کی۔
- A * جامد پاتھ فائنڈنگ کی تلاش: ساختی جگہوں میں پہلے سے گنتی والے راستے۔
- متحرک تحریک کے لیے 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% درستگی۔
- قدرتی تعاملات کو فعال کیا جیسے "بلیو بک اٹھاؤ"
لوپ کو بند کرنا - قدرتی زبان میں AI فیڈ بیک
اب جب کہ روبوٹ:
- ہدایات کو سمجھتا ہے (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، مضبوط راستے کی منصوبہ بندی، ریئل ٹائم آبجیکٹ کا پتہ لگانے، اور تخلیقی زبان کی ہم آہنگی نے باہمی تعاون کے ساتھ روبوٹکس میں ایک نئی سرحد کھول دی ہے۔ ہمارے ایجنٹ اہم احکامات کی تشریح کر سکتے ہیں، متحرک ماحول میں تشریف لے جا سکتے ہیں، قابل ذکر درستگی کے ساتھ اشیاء کی شناخت کر سکتے ہیں، اور قدرتی محسوس ہونے والے ردعمل فراہم کر سکتے ہیں۔
آسان کاموں کو انجام دینے کے علاوہ، یہ روبوٹ حقیقی سوالات پوچھنے، اعمال کی وضاحت کرنے، اور پرواز پر موافقت کرنے میں آگے پیچھے حقیقی مواصلات میں مشغول ہوتے ہیں۔ یہ ایک ایسے مستقبل کی جھلک ہے جہاں مشینیں خدمت سے زیادہ کام کرتی ہیں: وہ ہمارے روزمرہ کے معمولات میں حقیقی شراکت دار کے طور پر تعاون کرتے، سیکھتے اور بات چیت کرتے ہیں۔
کچھ تکنیکوں پر مزید پڑھنا
- زبان کی تفہیم کے لیے BERT
- A* پاتھ پلاننگ کی تلاش
- ریئل ٹائم آبجیکٹ کا پتہ لگانے کے لیے YOLOv8
- روبوٹکس کے لیے کمک سیکھنا