Очень интересные нынче развития технологий намечаются. Огромной основой большого количества современных программ являются нейросети. Нейросети у нас нынче растут аки это самое в деревенском сортире, куда дрожжи кинули. Адски растёт количество параметров (взвешенных связей) между нейронами.
Набор параметров кажого нейрона представляет собой матрицу, и чтобы посчитать, активируется ли нейрон или нет, надо помножить вес каждой связи на входное значение этой связи, и смотреть, что получится. Математически выражаясь, считается скалярное произведение.
Количество параметров гугловской нейросети 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%?
В-общем, с интересом смотрю за дальнейшим развитием событий. Я нейросети уже щупал плотно несколько раз, мне они очень нравятся, и я думаю, что если мы когда-нибудь придумаем полный ИИ, именно нейросети станут его основой. И не исключено, что в их основе будут именно аналоговые вычисления. Ну, как у нас в башке.