Что такое искусственный интеллект
Что такое искусственный интеллект
Как учатся нейронки

Есть мод­ные сло­ва: искус­ствен­ный интел­лект (ИИ), машин­ное обу­че­ние и ней­ро­се­ти. Раз­бе­рём­ся, что есть что и зачем оно нуж­но.

Чем не угодили обычные алгоритмы

С момен­та созда­ния пер­вых ком­пью­те­ров люди дава­ли им инструк­ции: делай то-то, в таком-то поряд­ке. Поря­док и опи­са­ние дей­ствий назы­ва­ет­ся алго­рит­мом. Все про­грам­мы, кото­рые вас окру­жа­ют, рабо­та­ют на базе алго­рит­мов. Там всё чёт­ко: «Если нажа­та такая кноп­ка, сде­лай вот это».

Про­бле­ма алго­рит­мов в том, что они совер­шен­но бес­по­мощ­ны за пре­де­ла­ми сво­их инструк­ций. Ком­пью­те­ры не уме­ют ори­ен­ти­ро­вать­ся по ситу­а­ции. Если в алго­рит­ме что-то не про­пи­са­но, ком­пью­тер это­го не сде­ла­ет, даже если от это­го зави­сит его жизнь. Если бы ком­пью­те­ры уме­ли ори­ен­ти­ро­вать­ся в нестан­дарт­ных ситу­а­ци­ях, мы бы нико­гда не виде­ли оши­бок и «синих экра­нов смер­ти».

Напри­мер, вы ска­за­ли робо­ту «Перед пере­хо­дом ули­цы посмот­ри сна­ча­ла нале­во, а потом напра­во, и если машин нет, то пере­хо­ди доро­гу». Робот подо­шёл к пере­хо­ду. Он посмот­рел нале­во, уви­дел там асфаль­то­уклад­чик. Асфаль­то­уклад­чик — это не маши­на, поэто­му робот пере­хо­дит доро­гу, его вка­ты­ва­ет в асфальт. А что? Такой алго­ритм.

Что­бы робо­ты вели себя немно­го умнее, им пишут слож­ные алго­рит­мы. Но про­бле­ма оста­ёт­ся: всё, что в алго­ритм не попа­ло, нико­гда не будет испол­не­но. И раз­ра­бот­чи­ки уже мно­го деся­ти­ле­тий меч­та­ют научить маши­ны думать более само­сто­я­тель­но. Для это­го при­ду­ма­ли мно­го чего, в том чис­ле — ней­ро­се­ти.

Что такое нейросети

Есть мно­го мифов о ней­ро­се­тях: буд­то это ком­пью­тер­ный разум, само­обу­ча­ю­ща­я­ся систе­ма, мыс­ля­щая про­грам­ма и так далее. Всё это не так.

На самом деле ней­ро­сеть — это про­сто очень слож­ная база дан­ных с кучей фор­мул. Дан­ные посту­па­ют с одно­го кон­ца базы дан­ных, обра­ба­ты­ва­ют­ся через кучу фор­мул и выда­ют­ся с дру­го­го кон­ца. Ника­ких мыс­лей там нет — про­сто мате­ма­ти­ка. Слож­ность в том, что­бы выве­сти те фор­му­лы, бла­го­да­ря кото­рым ней­ро­сеть даёт хоть сколько-нибудь полез­ный резуль­тат. Выве­де­ние этих фор­мул — и есть машин­ное обу­че­ние. У нас будет отдель­ная ста­тья о том, как это всё устро­е­но. 

Вот самое про­стое отоб­ра­же­ние струк­ту­ры ней­ро­се­ти. Сле­ва ячей­ки вво­да дан­ных, спра­ва ячей­ки выво­да дан­ных, а меж­ду ними — какой-то скры­тый слой, в кото­ром ней­ро­сеть совер­ша­ет свои мате­ма­ти­че­ские вычис­ле­ния. Пока что это может быть непо­нят­но, но мы еще рас­ска­жем об этом отдель­но.

Artificial neural network

Чем нейросети отличаются от алгоритмов

В алго­рит­мах раз­ра­бот­чи­ки сра­зу про­пи­сы­ва­ют пра­виль­ную после­до­ва­тель­ность дей­ствий, кото­рые дают какой-то пред­ска­зу­е­мый резуль­тат. Напри­мер, раз­ра­бот­чик пишет про­грам­му для рас­че­та пло­ща­ди квар­ти­ры по чер­те­жу, и там поша­го­во опи­са­ны все дей­ствия: умножь, сло­жи, вычти и т. д. Если посмот­реть на этот алго­ритм, будет понят­но его устрой­ство, в него мож­но вне­сти изме­не­ния. 

Ней­ро­се­тям вме­сто алго­рит­мов дают мно­го зара­нее пра­виль­но решен­ных задач. Напри­мер, десять тысяч пла­нов квар­тир с уже про­пи­сан­ны­ми пло­ща­дя­ми. И ней­ро­сеть начи­на­ет уга­ды­вать, какой резуль­тат от нее ожи­да­ют. Отдель­ный алго­ритм гово­рит ей, пра­виль­но она уга­да­ла или нет, и со вре­ме­нем она учит­ся уга­ды­вать всё более пра­виль­но. 

По ходу обу­че­ния у ней­ро­се­ти фор­ми­ру­ют­ся свя­зи, кото­рые поз­во­ля­ют ей уга­ды­вать полез­ный резуль­тат. Какие это свя­зи, никто не пони­ма­ет — мы можем их про­на­блю­дать, но не все­гда можем понять прин­цип, по кото­рым они фор­ми­ру­ют­ся. 

Коро­че: алго­ритм дела­ет то, что ему ска­за­но, и дает чет­кий пред­ска­зу­е­мый резуль­тат. Ней­ро­сеть уга­ды­ва­ет, что мы от нее хотим, по непо­нят­но­му нам прин­ци­пу. При этом, если сеть доста­точ­но хоро­шо обу­че­на, ее уга­ды­ва­ния могут быть доста­точ­но точ­ны­ми. 

Что нужно понимать о нейросетях

Ней­ро­се­ти в совре­мен­ном виде — это маши­ны по обра­бот­ке чисел. Ней­ро­сеть не пони­ма­ет, что смот­рит на кар­тин­ку или водит машин­ку, — она лишь видит чис­ла на вхо­де и выда­ёт чис­ла на выхо­де. Она даже не зна­ет, что у её чисел на выхо­де для нас есть какое-то зна­че­ние.

Напри­мер, в этом видео ней­ро­сеть полу­ча­ет семь чисел на вхо­де (это рас­сто­я­ния до пре­пят­ствий и направ­ле­ние дви­же­ния) и выда­ет два чис­ла на выхо­де — пово­рот руля и газ-тормоз. И уже симу­ля­тор гоноч­ной игры пре­вра­ща­ет эти чис­ла в дви­же­ние машин­ки. Ней­рон­ка про­сто обра­ба­ты­ва­ет чис­ла:

Ней­ро­сеть всё еще не уме­ет импро­ви­зи­ро­вать. Она может дей­ство­вать в ситу­а­ции неко­то­рой непред­ска­зу­е­мо­сти, но гене­ри­ро­вать ори­ги­наль­ные реше­ния — нет. 

Ней­ро­сеть мож­но запу­стить на любом ком­пью­те­ре, осо­бое желе­зо не нуж­но. Это про­сто алго­ритм и дан­ные. Их мож­но ско­пи­ро­вать, заар­хи­ви­ро­вать и выло­жить в интер­нет.

При этом есть и спе­ци­аль­ное желе­зо — ней­рон­ные про­цес­со­ры или, по-другому, ИИ-ускорители. Это те же мик­ро­про­цес­со­ры, но соеди­нён­ные таким обра­зом, что­бы быст­рее обсчи­ты­вать имен­но ней­рон­ки. Но они нуж­ны толь­ко для ско­ро­сти, так-то прин­ци­пи­аль­но ней­рон­ку мож­но рас­счи­тать и на обыч­ном про­цес­со­ре.

На нынеш­нем вит­ке раз­ви­тия ней­ро­се­ти спо­соб­ны лишь вос­про­из­во­дить то, чему их научи­ли. Сво­бод­ное твор­че­ство с чисто­го листа пока не изоб­ре­ли.

Где используется ИИ

Вокруг нас уже мно­го устройств и сер­ви­сов, внут­ри кото­рых есть ИИ в том или ином виде.

Голо­со­вые помощ­ни­ки в теле­фо­нах и колон­ках рас­по­зна­ют речь и коман­ды, что­бы пока­зать нам луч­ший марш­рут, резуль­тат поис­ка или зачи­тать про­гноз пого­ды. Та же «Али­са» рас­по­зна­ёт речь, ана­ли­зи­ру­ет её, опре­де­ля­ет тема­ти­ку диа­ло­га, выде­ля­ет полез­ную для поис­ка инфор­ма­цию и син­те­зи­ру­ет отве­ты помощ­ни­ка — и во всём ей помо­га­ют зара­нее натре­ни­ро­ван­ные ней­ро­се­ти. Подроб­нее про устрой­ство «Али­сы» читай­те на Хаб­ре.

Чат-боты на сай­тах пони­ма­ют типо­вые вопро­сы, даже если они сфор­му­ли­ро­ва­ны по-разному, и отве­ча­ют на них. Это поз­во­ля­ет нани­мать мень­ше людей в тех­под­держ­ку. Они отли­ча­ют­ся от при­ми­тив­ных ботов «Оставь-свой-номер-и-мы-перезвоним» тем, что рас­по­зна­ют текст вопро­са и сами нахо­дят на него ответ в сво­ей базе зна­ний. Чаще все­го внут­ри таких ботов кру­тит­ся TensorFlow — систе­ма машин­но­го обу­че­ния от Google с откры­ты­ми исход­ни­ка­ми. Хоти­те собрать тако­го бота само­сто­я­тель­но — дер­жи­те инструк­цию.

Умные филь­тры в фото­ка­ме­рах сами опре­де­ля­ют, когда вы сни­ма­е­те про­тив солн­ца, и добав­ля­ют ярко­сти в тенях, что­бы кар­тин­ка полу­чи­лась сба­лан­си­ро­ван­ной. Если дела­е­те сел­фи — каме­ра пони­ма­ет, что на фото будет лицо и дела­ет его ещё кра­си­вее: уби­ра­ет пры­щи­ки, мор­щин­ки и тор­ча­щие волос­ки. В послед­них моде­лях теле­фо­нов Honor за это отве­ча­ет отдель­ный модуль в про­цес­со­ре — Neural Network Processing Unit: NPU. Он управ­ля­ет про­стой ней­рон­кой, но даже её хва­та­ет для того, что­бы делать класс­ные фот­ки.

Вари­ан­тов реа­ли­за­ции ИИ мно­го, но их все мож­но раз­де­лить на две груп­пы — реше­ние узких задач и пол­но­цен­ный искус­ствен­ный интел­лект обще­го назна­че­ния.

ИИ общего назначения

А вот здесь всё не так здо­ро­во, как в реше­нии при­клад­ных задач. Дело в том, что научить ком­пью­тер мыс­лить как чело­век пока невоз­мож­но. Каж­дая область мыш­ле­ния — отдель­ная про­грам­ма, кото­рая долж­на уметь рабо­тать со все­ми осталь­ны­ми про­грам­ма­ми. Реа­ли­зо­вать такую мас­штаб­ную систе­му пока невоз­мож­но — нет ни алго­рит­мов, ни вычис­ли­тель­ной мощ­но­сти для это­го, плюс не на чем обу­чать.

Есть ими­та­ции искус­ствен­но­го интел­лек­та в отно­си­тель­но широ­ких обла­стях, но пол­но­цен­но мыс­лить как люди они не могут. Напри­мер, раз­ра­бот­ка ком­па­нии IBM — ИИ Watson — может стро­ить логи­че­ские свя­зи меж­ду мно­же­ством фак­тов и делать пра­виль­ные выво­ды на их осно­ве. Одно из при­ме­не­ний Ват­со­на — поста­нов­ка диа­гно­зов в меди­цине. Ещё он кру­то игра­ет в «Jeopardy!» — ана­лог «Сво­ей игры» на аме­ри­кан­ском ТВ.


IBM назна­чи­ла приз в мил­ли­он дол­ла­ров тому, кто побе­дит Ват­со­на в «Сво­ей игре». До сих пор нико­му это не уда­лось.

Но даже Ват­сон не может одно­вре­мен­но рас­по­зна­вать лица, писать акту­аль­ный и осмыс­лен­ный текст, под­дер­жи­вать пол­но­цен­ный диа­лог и при­ни­мать реше­ния, поехать ли в выход­ные на шаш­лы­ки или про­ве­сти вре­мя с детьми. Воз­мож­но, ситу­а­ция изме­нит­ся с выхо­дом пол­но­цен­ных кван­то­вых ком­пью­те­ров, но до это­го пока ещё очень дале­ко.

Плюс, есть чисто фило­соф­ская про­бле­ма: люди пока что не поня­ли до кон­ца, что такое созна­ние, что его опре­де­ля­ет, что такое разум и интел­лект. Что, если наш мозг — тоже лишь ней­ро­сеть, кото­рая видит инфор­ма­цию на вхо­де и выда­ёт дей­ствия на выхо­де? А всё, что мы счи­та­ем созна­ни­ем, — лишь внут­рен­ний шум от рабо­ты ней­ро­нов?

Но фило­со­фию оста­вим фило­со­фам. В одной из сле­ду­ю­щих ста­тей пока­жем, как по ней­рон­кам бегут сиг­на­лы, и деталь­но раз­бе­рём суть машин­но­го обу­че­ния.