Вперёд, к тёплому ламповому аналогу!

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

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

Коли­че­ство пара­мет­ров гуг­лов­ской ней­ро­се­ти Inception тре­тей вер­сии — при­мер­но 12 мил­ли­о­нов. То-есть, каж­дый раз мы счи­та­ем ска­ляр­ное про­из­ве­де­ние мат­ри­цы с 12 мил­ли­о­на­ми эле­мен­тов с точ­но такой же мат­ри­цей. Очень, очень вычис­ли­тель­но доро­гое удо­воль­ствие.

Что с этим мож­но сде­лать? А, напри­мер, вот что. Мож­но каж­дый пара­метр пред­ста­вить рези­сто­ром. Вход­ное зна­че­ние — подан­ное на него напря­же­ние, вес — про­во­ди­мость. Про­во­ди­мость — вели­чи­на, обрат­ная сопро­тив­ле­нию: G = 1/R или же R = 1/G

А теперь закон Ома:

I = U/R, а R заме­ним 1/G: I = U/(1/G), упро­стим: I = UG. Пода­ём вход­ное напря­же­ние, и меря­ем ток. Вот вам и ска­ляр­ное про­из­ве­де­ние, при­чём чисто ана­ло­го­вы­ми мето­да­ми.

Но хард­вер­ный рези­стор, разу­ме­ет­ся, не очень удоб­но. Зато зна­е­те, что удоб­но? Флеш-память! Флеш пред­став­ля­ет собой мил­ли­ар­ды поле­вых тран­зи­сто­ров с изо­ли­ро­ван­ным затво­ром, веду­щих себя как рези­сто­ры. Изна­чаль­но на них хра­ни­ли толь­ко 0 или 1, ток выше или ниже поро­го­во­го зна­че­ния счи­ты­вал­ся как ноль или еди­ни­ца. Потом сде­ла­ли мно­го­уров­не­вую флеш-память, и на совре­мен­ных твёр­до­тель­ни­ках QLC каж­дая ячей­ка хра­нит аж 16 зна­че­ний (4 бита). Теперь пошли даль­ше, и на этих элек­три­че­ски про­грам­ми­ру­е­мых рези­сто­рах научи­лись про­из­во­дить самые насто­я­щие ана­ло­го­вые вычис­ле­ния, очень инте­рес­ным при­ме­не­ни­ем кото­рых и явля­ют­ся рас­чё­ты ска­ляр­ных про­из­ве­де­ний для рабо­ты ней­ро­се­тей.

Очень, очень инте­рес­ные нын­че вещи при­ду­мы­ва­ют. Как вам такое — рас­чё­ты на жёст­ком дис­ке?

Конеч­но, у подоб­но­го под­хо­да есть недо­стат­ки: более низ­кая точ­ность вычис­ле­ний. Но ней­ро­се­ти, вооб­ще-то и так рабо­та­ют по веро­ят­ност­но­му прин­ци­пу. Какая тебе, в сущ­но­сти, раз­ни­ца, если ней­ро­сеть опре­де­ля­ет фот­ки коти­ков с 99% точ­но­стью или «толь­ко» с 95%?

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