Wyobraź sobie, że użytkownik końcowy pokazuje robotowi, jak wykonać zadanie. Na przykład prowadzą samochód w sposób, w jaki chcieliby, aby był prowadzony przez robota. Czy możesz wymyślić sposób, w jaki robot wykorzysta te działania — nazywamy je „demonstracjami” — aby dowiedzieć się, jaką funkcję kosztów powinien zoptymalizować? Właściwie już widzieliśmy odpowiedź na to. Tam konfiguracja była nieco inna: inna osoba podejmowała działania w tej samej przestrzeni co robot, a robot musiał przewidzieć, co ta osoba zrobi. Ale jedną z technik, którą przeszliśmy do tworzenia tych prognoz, było założenie, że ludzie działają w celu głośnej optymalizacji pewnej funkcji kosztu JH, a my możemy wykorzystać ich bieżące działania jako dowód na to, jaka to funkcja kosztu. Tutaj możemy zrobić to samo, tyle że nie w celu przewidywania ludzkich zachowań w przyszłości, ale raczej uzyskania funkcji kosztu, którą sam robot powinien zoptymalizować. Jeśli dana osoba jeździ defensywnie, funkcja kosztów, która wyjaśni jej działania, będzie kładła duży nacisk na bezpieczeństwo, a mniej na wydajność. Robot może przyjąć tę funkcję kosztów jako własną i zoptymalizować ją podczas prowadzenia samego samochodu. Robotycy eksperymentowali z różnymi algorytmami, aby to wnioskowanie o kosztach było możliwe do wykonania obliczeniowego. Na rysunku 26.29 widzimy przykład uczenia robota, aby wolał pozostawać na drodze niż pokonywać trawiasty teren. Tradycyjnie w takich metodach funkcję kosztu przedstawiano jako połączenie ręcznie wykonanych funkcji, ale w ostatnich pracach badano również, jak ją przedstawić za pomocą głębokiej sieci neuronowej, bez inżynierii funkcji. Istnieją inne sposoby wprowadzania danych przez daną osobę. Osoba może używać języka zamiast demonstracji, aby poinstruować robota. Osoba może zachowywać się jak krytyk, obserwując robota wykonującego zadanie w jeden (lub na dwa sposoby), a następnie mówiąc, jak dobrze zadanie zostało wykonane (lub który sposób był lepszy) lub dając radę, jak poprawić.