–Ага! — сказали мужики

Пыта­юсь нащу­пать гра­ни­цы воз­мож­но­стей сво­ей пред­ска­за­тель­ной моде­ли на TensorFlow. Точ­ность пред­ска­за­ния, кста­ти, после чте­ния ком­мен­тов, стал оце­ни­вать по трём пара­мет­рам: сред­не­му (по моду­лю) откло­не­нию, мини­маль­но­му откло­не­нию, и мак­си­маль­но­му откло­не­нию (всё в про­цен­тах).

Так вот какие-то там сло­же­ния, деле­ния, вычи­та­ния и умно­же­ния в самых раз­ных ком­би­на­ци­ях — без про­блем.

–Вжик — ска­за­ла ней­ро­сеть

Ах вот ты как? А логаритм10 сум­мы двух дро­бей, помно­жен­ных на зна­че­ние, воз­ве­дён­ное в квад­рат, могёшь?

–Дыр-дыр-ддд — ска­за­ла ней­ро­сеть. И ста­ла оши­бать­ся аж на две­сти про­цен­тов.

При­ми­тив­ное нара­щи­ва­ние коли­че­ства пара­мет­ров резуль­та­тов пока не даёт. Види­мо, пред­ска­за­ние рез­ко нели­ней­ных функ­ций (осо­бен­но если их там >1) оно всё же не очень.

Хочу зачесть лите­ра­ту­ру:

Я уве­рен, что про­сто что-то не так делаю.

Математическое и компьютерное

Вот неко­то­рые дума­ют, что если вычис­ле­ния пере­не­сти на ГПУ вме­сто ЦПУ, то:

1. Всё сра­зу зара­бо­та­ет в сто раз быст­рее.
2. Будет сра­зу рабо­тать луч­ше.

Авот­шЫш. Не все­гда, и не вез­де.

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

Запус­каю на ЦПУ — сеть тре­ни­ру­ет­ся за три мину­ты, и выда­ёт доволь­но нор­маль­ный резуль­тат, с точ­но­стью в пре­де­лах 0.7%

Запус­каю на ГПУ — сеть тре­ни­ру­ет­ся уже за пять минут, а не за три, а резуль­тат у ней — замет­но хре­но­вей, с погреш­но­стью уже 1.23%

Я пола­гаю, что послед­нее это пото­му, что TensorFlow, будучи запу­щен­ным на ГПУ, по умол­ча­нию до сих пор исполь­зу­ет 16 бит для пред­став­ле­ния чисел с пла­ва­ю­щей запя­той, вме­сто 32 бит или даже 64. Надо будет погля­деть, мож­но ли его заста­вить исполь­зо­вать боль­ше бит. Хотя, конеч­но, мате­ма­ти­ка на ком­пью­те­рах — она дело такое, что вооб­ще-то никто гаран­тии, что резуль­тат вычис­ле­ний будет оди­на­ко­вым, если про­грам­ма запус­ка­ет­ся на про­цес­со­рах раз­ной архи­тек­ту­ры, нико­гда не давал. Осо­бен­но, если чис­ла такие, что пред­ста­вить их точ­но в фор­ма­те IEEE-754 невоз­мож­но (напри­мер, деся­тич­ная дробь 0.2).

А вот поче­му оно ничуть не быст­рее рабо­та­ет на ГПУ, чем на ЦПУ — для меня уже загад­ка. RTX3080 вро­де как пошЫр­ше дол­жен быть во флоп­сах, чем i9-11900k @ 3.5GHz. Может быть, такая малень­кая модель его про­сто нагру­зить тол­ком не в состо­я­нии.

И да, «что­бы два раза не вста­вать».

Как наи­бо­лее пра­виль­но счи­тать и пред­став­лять сред­нюю ошиб­ку в вычис­ле­ни­ях?

Вот, напри­мер, если в одном пред­ска­за­нии из двух про­грам­ма ошиб­лась на +100%, а во вто­ром — на ‑100%, вряд­ли заяв­ле­ние о том, что сред­няя ошиб­ка состав­ля­ет 0% (100−100)÷2, будет пред­став­лять­ся нам истин­ным.
Но с дру­гой сто­ро­ны, если тупо счи­тать ошиб­ки по моду­лю, а про­грам­ма при этом ста­биль­но оши­ба­ет­ся то на +1%, то на ‑1%, ста­ти­сти­че­ски-то ведь она, мож­но ска­зать, что не оши­ба­ет­ся вовсе.
Как обыч­но дей­ству­ют, вдруг кто зна­ет?

ИИ-погромизм

Зани­мал­ся вче­ра созда­ни­ем ней­ро­се­тей под руко­вод­ством ChatGPT. По ито­гам я имею ска­зать вот что.

В целом — впе­чат­ля­ет. Даёт не самый пло­хой код на Питоне для созда­ния ней­ро­се­ти на TensorFlow, что харак­тер­но — исполь­зуя keras. Прак­ти­че­ски то же самое, что я сам рисо­вал четы­ре года назад.

Толь­ко в этот раз я замах­нул­ся пошЫр­ше и решил ней­ро­се­ти скор­мить csv с «финан­со­вы­ми тран­зак­ци­я­ми». Внут­ри csv было один­на­дцать коло­нок, десять про­сто с чис­ла­ми, а один­на­дца­тая — с доволь­но слож­ным вычис­ле­ни­ем из дан­ных, нахо­дя­щих­ся в шести колон­ках (сло­же­ние двух дро­бей, вычис­ле­ние 10% от полу­чен­но­го, и скла­ды­ва­ние с ещё дву­мя колон­ка­ми). Четы­ре остав­ши­е­ся колон­ки не дела­ли ниче­го.

Модель делал пяти­слой­ную, сто ней­ро­нов в четы­рёх сло­ях, один ней­рон в выход­ном слое (это уже не ЧатЖПТ пред­ла­гал, это уже я сам). Навер­ное, это даже избы­точ­но слож­ная модель.

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

Ска­жу сра­зу, всё полу­чи­лось. Конеч­но, мате­ма­ти­ка на ней­ро­се­тях доволь­но неак­ку­рат­на, но после 5000 эпох тре­ни­ров­ки она смог­ла преду­га­ды­вать зна­че­ния с точ­но­стью, не выхо­дя­щей за рам­ки 5%. Пла­ни­рую пока­зать резуль­тат началь­ни­ку, кон­то­ра силь­но оза­бо­ти­лась встра­и­ва­ни­ем ИИ в про­дук­цию.

Но поми­мо это­го, у меня воз­ник­ли неболь­шые слож­но­сти, и воз­ник­ли они имен­но от при­ме­не­ния ИИ.

Во-пер­вых, ЧатЖПТ неред­ко даёт код для Пито­нов­ских биб­лио­тек, кото­рый уже явля­ет­ся уста­рев­шим (deprecated). Напри­мер, свой­ство pandas.DataFrame.iloc — вытас­ки­ва­ние инди­ви­ду­аль­ных коло­нок из pandas.DataFrame.

Во-вто­рых, ЧатЖПТ созда­ёт в коде баги. Напри­мер, вме­сто деся­ти строк в тесто­вом набо­ре дан­ных у меня поче­му-то счи­ты­ва­лись толь­ко девять. Раз­го­вор шёл при­мер­но вот так:

–А у меня вме­сто деся­ти ожи­да­е­мых строк толь­ко девять.
–Может, дан­ные кри­вые? Вот как их надо нор­ма­ли­зи­ро­вать.
–Дан­ные нор­маль­ные, но счи­ты­ва­ет­ся толь­ко девять строк вме­сто деся­ти. Пер­вая стро­ка про­гла­ты­ва­ет­ся.
–Не долж­на. Вот код, как пра­виль­но счи­ты­вать csv через pandas.read_csv
–Я этот код и исполь­зую, но пер­вой стро­ки нет.
–Ну, пра­виль­но, пото­му что по умол­ча­нию пер­вая стро­ка счи­ты­ва­ет­ся в име­на коло­нок. В pandas.read_csv надо ста­вить пара­метр header=None, что­бы так не про­ис­хо­ди­ло.
–А чо сра­зу-то не ска­зал?
–Изви­ня­юсь.

Но в целом (в целом) — впе­чат­ля­ет, да. Дале­ко не с каж­дым чело­ве­ком я на эту тему могу пого­во­рить, более того, не каж­дый сра­зу «на гора» выдаст рабо­та­ю­щий (более-менее) код. Оши­ба­ет­ся ино­гда? Ну да, оши­ба­ет­ся. Пока­жи­те мне чело­ве­ка, кото­рый не оши­ба­ет­ся, и я пока­жу вам лен­тяя, кото­рый нико­гда ниче­го не дела­ет. Тем не менее, лен­тяю в спо­соб­но­сти рас­суж­дать поче­му-то не отка­зы­ва­ют, а иску­ствен­но­му интел­лек­ту — таки да. Непра­виль­но это, ИМХО. ИИ вполне спо­со­бен на рас­суж­де­ния.

Принялся за Хайнлайна

Я люб­лю науч­ную фан­та­сти­ку, и поми­мо самих сюже­тов, мне нра­вит­ся то, что писа­те­ли-фан­та­сты име­ют воз­мож­ность зада­вать вопро­сы, о кото­рых чело­ве­че­ство ещё даже думать не нача­ло. Напри­мер, Филип Дик задал вопрос о том, а что такое — «чело­век», и может ли являть­ся что-то иску­ствен­ное, что выгля­дит, дума­ет, чув­ству­ет как чело­век — чело­ве­ком? Очень глу­бо­кий вопрос, учи­ты­вая, что мы бук­валь­но сто­им на поро­ге созда­ния силь­но­го иску­ствен­но­го интел­лек­та, и его отно­ше­ния с чело­ве­че­ством непре­мен­но будут наты­кать­ся на отсут­ствие соот­вет­ству­ю­ще­го поня­тий­но­го аппа­ра­та и пра­во­вой базы. Послед­нюю, прав­да, спеш­но (и доволь­но бес­тол­ко­во) пыта­ют­ся создать наши доро­гие слу­ги наро­да.

https://www.washingtonpost.com/technology/2023/10/30/biden-artificial-intelligence-executive-order/

Из аме­ри­кан­ских фан­та­стов я читал Ази­мо­ва, Брэд­бе­ри, Дика — а вот Хай­н­лай­на пока не при­хо­ди­лось. Хай­н­лайн был в Сою­зе не силь­но в фаво­ре, так как он был убеж­дён­ным анти­ком­му­ни­стом и либер­та­ри­ан­цем, и почти не печа­тал­ся, так что его роман 1966 года «The Moon is a Harsh Mistress» («Луна — суро­вая хозяй­ка») не уви­дел рус­ско­го пере­во­да до паде­ния совет­ской вла­сти, в 1993 году. Так что как-то Хай­н­лайн про­шёл мимо меня.

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

Объ­яс­няю. Так на англий­ском язы­ке гово­рят рус­ские. Это англий­ский язык с рус­ской грам­ма­ти­кой и типич­ной же ошиб­кой рус­ско­языч­ных — пол­ным «гло­та­ни­ем» арти­клей и неко­то­рых частиц. В рус­ском их нет, поэто­му о них и забы­ва­ют. Помно­жим это на огром­ное коли­че­ство заим­ство­ван­ных слов — tovarisch, gospozha, и полу­чим то, что кни­га Хай­н­лай­на в моей голо­ве одно­знач­но гово­рит с тяжё­лым рус­ским акцен­том. И как вы пред­ла­га­е­те пра­виль­но пере­дать такое в пере­во­де? А никак, вот как.

Надо отдать долж­ное пере­вод­чи­ку Щер­ба­ко­ву, кото­рый в 1993 году попы­тал­ся создать с нуля некий сур­жик, кото­рым он попы­тал­ся доне­сти ори­ги­наль­ный язык рома­на, назва­ние како­во­го он пере­вёл как «Луна жёст­ко сте­лит», но всё же это… не то. Дру­гие пере­во­ды не дела­ли и этой попыт­ки, поэто­му язы­ко­вой замы­сел авто­ра в них вооб­ще про­ле­та­ет как фане­ра над горо­дом Пари­жем.

Если есть воз­мож­ность, читать надо в ори­ги­на­ле.

А книж­ка хоро­шая, мне очень нра­вит­ся пока. В ней при­сут­ству­ет ком­пью­тер с созна­ни­ем, на осно­ве ней­ро­се­тей (!!) И это было напи­са­но в 1966 году! Отрад­но видеть, что автор сумел загля­нуть так дале­ко впе­рёд. Прав­да, вме­сто «иску­ствен­но­го ней­ро­на» или «пер­цеп­тро­на» он исполь­зу­ет тер­мин «ней­ри­стор», но это сущие пустя­ки.

Про освоение искуственного интеллекта

Под­рост­ки из шко­лы горо­да Вест­фильд, что в Нью-Джер­си, исполь­зо­ва­ли ИИ, что­бы вир­ту­аль­но «раз­де­вать» одно­класс­ниц.

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

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

ИИ и возрождение голосов

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

Лич­но мне бы хоте­лось, что­бы кто-то нако­нец сде­лал про­дол­же­ние игры Full Throttle (Пол­ный газ), кото­рую я неж­но люб­лю. Она вышла в 1995 году, потом дол­го шли раз­го­во­ры о выхо­де Full Throttle 2 (и даже сде­ла­ли трей­лер), но во-пер­вых, из Лукас Артс ушёл раз­ра­бот­чик пер­вой игры Тим Шей­фер, а во-вто­рых, в 2002 году актёр озвуч­ки Рой Конрад, сто­я­щий за голо­сом глав­но­го героя Бена, умер от рака лёг­ких.

Не голо­сом еди­ным, конеч­но, но всё же зву­чал он отлич­но.

Самое вре­мя теперь Шей­фе­ру под­су­е­тить­ся и сде­лать нако­нец про­дол­же­ние игры. Сде­лал же он рема­сте­ринг ори­ги­на­ла в 2017 году, кото­рый я с удо­воль­стви­ем при­об­рёл и про­шёл зано­во.

ИИ-музыка

Гене­ра­ция музы­каль­но­го кон­тен­та при помо­щи ИИ уже доволь­но дол­го исполь­зу­ет­ся ком­по­зи­то­ра­ми в циф­ро­вых зву­ко­вых рабо­чих стан­ци­ях (DAW). Но теперь есть инстру­мент, кото­рый поз­во­ля­ет любо­му чело­ве­ку задать тек­сто­вый запрос и полу­чить музы­каль­ный ответ. Напри­мер «дум-метал с агрес­сив­ны­ми сбив­ка­ми» или «про­грес­сия аккор­дов для соло».

Кто искал? Полу­чи­те, рас­пи­ши­тесь. Это анонс Stable Audio — музы­каль­но­го гене­ра­то­ра от тех же людей, что сде­ла­ли Stable Diffusion.

Про найм на работу

Зна­ко­мая, док­тор наук по мате­ма­ти­ке, ищет рабо­ту ана­ли­ти­ка дан­ных. Послед­нее её интер­вью по видео­звон­ку про­во­дил… иску­ствен­ный интел­лект. Голо­сом обща­лись, все дела. Я даже и не знал, что тех­ни­ка настоль­ко про­дви­ну­лась.

Интер­вью писа­лось в файл, види­мо, что­бы потом чело­век про­смот­рел.

Чего-то не уве­рен я, что про­гресс наш идёт в нуж­ном направ­ле­нии. Мы-то дума­ли, что робо­ты будут делать всю гряз­ную и непри­ят­ную рабо­ту, а люди будут зара­ба­ты­вать боль­шие день­ги, и быть Сво­бод­ны­ми и Кре­а­тив­ны­ми. А полу­ча­ет­ся, что Сво­бод­ные и Кре­а­тив­ные как раз робо­ты, а мы с вами вынуж­де­ны дока­зы­вать этим элек­трон­ным бол­ва­нам, что мы тупо­ры­лые люди.

Вот такой ИИ нам нужен

Очень впе­чат­ля­ю­щий три­бьют Сту­дии «Гиб­ли» от Дмит­рия Алек­се­е­ва AKA Aifilmmaker. Огром­ная туча Мияд­за­ков­ских пер­со­на­жей, в ранне-пост-совет­ском анту­ра­же. Луч­ший, конеч­но (ну, на мой взгляд) — это свин, ну, кото­рый куре­наи но бута, в гара­же с 408‑м «Моск­ви­чом».

Каваи!!!!!!!!

ИИ в мирных целях

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

Сотруд­ник попро­сил мне напи­сать ему харак­те­ри­сти­ку с места рабо­ты. Писать вся­кую ерун­ду — дело нын­че не цар­ское. Обра­тил­ся, конеч­но, в ЧатЖПТ. «А напи­ши-ка мне, батень­ка, на него харак­те­ри­сти­ку, поло­жи­тель­ную, как в про­фес­си­о­наль­ном, так и в лич­ном каче­стве». Напи­са­ло, да так, что я в паре мест сам чуть не про­сле­зил­ся.

«Одна­ко что дей­стви­тель­но отли­ча­ет Мар­тѝ­на Гар­сию от дру­гих, так это его роль любя­ще­го отца. Его пре­дан­ность бла­го­по­лу­чию и вос­пи­та­нию доче­ри поис­ти­не вдох­нов­ля­ет. Я видел, как он делал все воз­мож­ное, что­бы создать забот­ли­вую и под­дер­жи­ва­ю­щую сре­ду для сво­е­го ребен­ка. Мар­тѝн Гар­сия при­ви­ва­ет им такие цен­но­сти, как ува­же­ние, сопе­ре­жи­ва­ние и тру­до­лю­бие, пода­вая при­мер во всех аспек­тах сво­ей жиз­ни. Его без­услов­ная любовь и неиз­мен­ное при­сут­ствие в жиз­ни доче­ри сами слу­жат сви­де­тель­ством его харак­те­ра и при­о­ри­те­тов.»

Глад­ко пишет, зара­за!!!

PS: Да, сотруд­ник — дей­стви­тель­но хиспа­ник, если чо.