W 2015 roku Andrej Karpathy, obecny szef działu AI tesli, doktor uniwersytetu Stanford przeprowadzał testy Rekurencyjnej Sieci Neuronowej (RNN) używając typu LSTM (Long Short Term Memory). Autor eksperymentu uczył swoje modele na różnych dostępnych źródłach tekstu tak, aby generowały one swoje własne treści.
RNN są nazywane rekurencyjnymi/powtarzającymi się, ponieważ wykonują to samo zadanie dla każdego elementu sekwencji, a dane wyjściowe zależą od poprzednich obliczeń. Możemy też myśleć o RNN, że posiadają one ”pamięć”, która przechwytuje informacje o tym, co zostało obliczone do tej pory.
Ciekawą częścią eksperymentu było zastosowanie jako tekstu uczącego obok twórczości Shakespeare’a czy artykułów z Wikipedii pełnego kodu źródłowego jądra Linuxa. Czyli źródłowego kodu języka C zajmującego jakieś 474MB. Nauczona na takim zbiorze sieć wygenerowała poniższy listing kodu:
/*
* Increment the size file of the new incorrect UI_FILTER group information
* of the size generatively.
*/
static int indicate_policy(void)
{
int error;
if (fd == MARN_EPT) {
/*
* The kernel blank will coeld it to userspace.
*/
if (ss->segment < mem_total)
unblock_graph_and_set_blocked();
else
ret = 1;
goto bail;
}
segaddr = in_SB(in.addr);
selector = seg / 16;
setup_works = true;
for (i = 0; i < blocks; i++) {
seq = buf[i++];
bpf = bd->bd.next + i * search;
if (fd) {
current = blocked;
}
}
rw->name = "Getjbbregs";
bprm_self_clearl(&iv->version);
regs->new = blocks[(BPF_STATS << info->historidac)] | PFMR_CLOBATHINC_SECONDS << 12;
return segtable;
}
Pełny artykuł w którym Karpathy opisuje swoje eksperymenty można znaleźć tutaj.
Powyższy kod prawdopodobnie się nie kompiluje i z pewnością nie wnosi nic użytecznego w jądro Linuxa. Jednak może być początkiem ciekawej dyskusji nad możliwością zastąpienia pracy programisty przez maszynę.
Według futurystycznych przewidywań, stworzonych na podstawie publikacji Carl Benedikt Frey i Michael A. Osborne "The Future of Employment: How susceptible are jobs to computerisation?” istnieje 48% prawdopodobieństwo zastąpienia programisty przez maszynę.
Brzmi to jak mrzonki i bujanie w obłokach, ale trwają pracę nad poważnymi zastosowaniami uczenia maszynowego w celu pisania kodu. Microsoft oraz Uniwersytetu Cambridge stworzyli system o nazwie DeepCoder, które bazuje na technice „program synthesis”, czyli tworzy nowe programy wykorzystując do tego linie kodu pochodzące z już istniejącego oprogramowania.
Autorzy przewidują, że narzędzie będzie w niedalekiej przyszłości pomagało w budowaniu rutynowych programów zajmujących się na przykład pozyskiwaniem informacji ze stron internetowych, albo automatycznym katalogowaniem zdjęć czy dokumentów bez wkładu pracy programisty, a jedynie na podstawie opisu biznesowego problemu wykonanym przez laika w dziedzinie pisania kodu.
Czy możliwe będzie całkowite zastąpienie programisty? Prawdopodobie dopiero gdy uda nam się stworzyć tzw. silną sztuczną inteligencję (artificial general intelligence) - czyli taką, która spełnia założenie, że pewne formy sztucznej inteligencji mogą posiadać wszystkie atrybuty dostępne umysłowi ludzkiemu.
Jednak to wcale nie tak odległe czasy - AI zastąpi programistów do roku 2040, ostrzegają naukowcy z Oak Ridge National Laboratory. Twierdzą oni, że do 2040 roku technologie uczenia maszynowego i przetwarzania języka naturalnego będą tak zaawansowane, że będą w stanie pisać lepszy kod oprogramowania i szybciej niż najlepsi “ludzcy” koderzy. Jako jedno z większych wyzwań postrzegane jest to, że występują i będą występować nadal różnice między architekturą sprzętową i wymaganiami oprogramowania.
W ankiecie przeprowadzonej przez Evans Data Corp, 550 twórców oprogramowania zostało zapytanych o najbardziej niepokojące aspekty ich kariery. 29 procent powiedziało: "Ja i moje wysiłki na rzecz rozwoju zostają zastąpione przez sztuczną inteligencję". Tak więc nie jest to istotny i zauważalny aspekt rozwoju technologii.
Komputery już teraz potrafią wiele.
Tworzą piosenki
Magenta to projekt zespołu Google Brain. Zespół pracuje przy użyciu TensorFlow - biblioteki uczenia maszynowego od Google. Już teraz można posłuchać pierwszej wygenerowanej komputerowo piosenki - skomponowanej bez żadnej ludzkiej pomocy.
Pokonują ludzi w grach
W 1997 roku w Nowym Jorku komputer IBM Deep Blue wygrał mecz szachowy z Garrym Kasparovem. To był pierwszy raz, gdy maszyna pokonała mistrza świata w szachach w warunkach turniejowych.
W 2011 roku inny komputer IBM - Watson - wziął udział w telewizyjnym konkursie "Jeopardy" przeciwko poprzednim zwycięzcom. Watson musiał słuchać pytań i udzielać odpowiedzi w naturalnym ludzkim języku. Nie był podłączony do Internetu.
W marcu 2016 r. AlphaGo - program komputerowy od Google DeepMind stworzony do gry planszowej Go - pokonał Lee Sedol, ówczesnego Mistrza Świata w Go.
Malują obrazy
W lutym 2016 r. W San Francisco Google sprzedało 29 obrazów na aukcji charytatywnej. Wszystkie zostały wykonane przez sztuczną inteligencję Google'a. Wydarzenie to zostało nazwane "DeepDream: sztuka sieci neuronowych".
Dokonują medycznych odkryć
W 2013 r. Sztuczna inteligencja została zaprzęgnięta do pracy w celu wykrycia raka piersi. Sieć neuronowa została przeszkolona, aby wykrywać oznaki raka za pomocą dziesiątków tysięcy zdjęć mammograficznych choroby.
Ale sieć neuronowa nauczyła się, że nie jest aż tak ważne, aby szukać samych guzów, ale raczej innych modyfikacji tkanki, które nie znajdują się w bezpośrednim sąsiedztwie komórek nowotworowych. To była nowa wiedza dla ludzkości. Do 2013 roku medycyna o tym nie wiedziała.
To z pewnością nie wszystko i tylko kwestią czasu jest, kiedy maszyna napisze swój pierwszy program komputerowy. Już niebawem powstaną narzędzia angażujące uczenie maszynowe i sztuczną inteligencję w pomoc programiści - inteligentne sugerowanie kodu, wykrywanie potencjalnych błędów czy problemów.
W nieco dalszej przyszłości pojawią się mechanizmy budowania coraz to bardziej złożonych aplikacji na podstawie ich opisu biznesowego. Być może będzie można nawet porozmawiać z komputerem o naszym pomyśle - a on wygeneruje za nas kod aplikacji?