Леха Новиков, [02.07.21 15:19]
[In reply to Alexander B]
Я не помню где я это писал, может я это устно сказал?
Леха Новиков, [02.07.21 15:20]
[In reply to Alexander B]
Любая функция подходит которая сужает диапазон до [0,1]
Alexander B, [02.07.21 15:20]
ладно, а можешь тогда напомнить зачем там нужна эта функция - типа арктангенс, которая бесконечную область определения перегоняет в отрезок
Леха Новиков, [02.07.21 15:22]
Потому что тебе нужно всё уместить в какие-то адекватные границы. Вот получилась у тебя в каком-то нейроне сумма 150, если ты её так и оставишь то она будет перевешивать вообще все остальные на следующем шаге.
Леха Новиков, [02.07.21 15:22]
То есть понятно что 150 должно весить больше чем 0.75, но не в двести раз
Alexander B, [02.07.21 15:23]
а можешь всю схему напомнить - что мы считаем нейроном?
Леха Новиков, [02.07.21 15:23]
[In reply to Alexander B]
Точечку в которую складывается сумма сигналов от предыдущего слоя нейронов
Alexander B, [02.07.21 15:23]
точечка - это вектор?
Леха Новиков, [02.07.21 15:24]
[In reply to Alexander B]
Нет, это то куда вектор ведёт. А вектор это связь между нейронами, и он имеет вес
Alexander B, [02.07.21 15:25]
точечка - это число?
Леха Новиков, [02.07.21 15:25]
Я думаю тебе проще найти готовое объяснение в Гугле, чем ждать что я всю картину сходу сформулирую
Леха Новиков, [02.07.21 15:25]
[In reply to Alexander B]
Она хранит число
Леха Новиков, [02.07.21 15:25]
Ну типа как переменная
Alexander B, [02.07.21 15:26]
в гугле будет схема, но они вряд ли смысл происходящего сформулируют, почему эта херь вообще типа учится?
Леха Новиков, [02.07.21 15:27]
[In reply to Alexander B]
Потому что ты её учишь. Ты подбираешь такие веса векторов чтобы результат был максимально близким к нужному
Alexander B, [02.07.21 15:27]
[ Photo ]
Alexander B, [02.07.21 15:27]
вот че в гугле
Леха Новиков, [02.07.21 15:27]
[In reply to Alexander B]
Да
Леха Новиков, [02.07.21 15:27]
[In reply to Alexander B]
Ну вот, точечки и векторы
Alexander B, [02.07.21 15:28]
вес вектора - это что?
Леха Новиков, [02.07.21 15:28]
[In reply to Леха Новиков]
Даже не просто точечки а кружочки
Леха Новиков, [02.07.21 15:28]
[In reply to Alexander B]
Это коэффициент насколько ты умножаешь значение при суммировании в следующую точечку
Alexander B, [02.07.21 15:28]
а умножение матриц здесь где?
Alexander B, [02.07.21 15:29]
и где в этой схеме арктангенс?
Леха Новиков, [02.07.21 15:29]
[In reply to Alexander B]
Ну каждый результат это сумма всего столбца умноженного на веса векторов. Не то чтобы прям матрицы, но немного похоже
Леха Новиков, [02.07.21 15:30]
[In reply to Alexander B]
Когда ты посчитал сумму надо как-то её умять в [0,1], я с этого начал
Леха Новиков, [02.07.21 15:30]
Каждая точечка должна иметь значение от 0 до 1
Alexander B, [02.07.21 15:30]
[In reply to Леха Новиков]
ну это как типа взять остатки по модулю 100 - чтобы числа не вылезали за 100
Alexander B, [02.07.21 15:31]
[In reply to Леха Новиков]
а дальше что?
Леха Новиков, [02.07.21 15:31]
[In reply to Alexander B]
Ну так не честно, больший вес всё таки должен давать большее значение, иначе совсем херня получится
Леха Новиков, [02.07.21 15:32]
[In reply to Alexander B]
Ну и всё. Ты производишь эту операцию сначала для первого столбца, потом для второго, потом для третьего, и итоговая точечка показывает насколько входные данные похожи на пингвина
Alexander B, [02.07.21 15:33]
входные данные - что такое
Alexander B, [02.07.21 15:33]
набор чисел?
Alexander B, [02.07.21 15:33]
вектор?
Леха Новиков, [02.07.21 15:33]
[In reply to Alexander B]
Начальные значения которые ты поставил в точечки слева
Alexander B, [02.07.21 15:34]
откуда они берутся - эти начальные значения, если я хочу научиться распознавать пингвина?
Леха Новиков, [02.07.21 15:35]
[In reply to Alexander B]
Ну значит это будут значения цвета пикселей. Например, 1024*768 точек * 3 компонента цвета(r, g, b)
Alexander B, [02.07.21 15:37]
1024*768*3=2359296 - это количество начальных значений?
Леха Новиков, [02.07.21 15:37]
[In reply to Alexander B]
Да
Alexander B, [02.07.21 15:37]
а на этой картинке - изображен тот, про которого мы точно знаем что он пингвин?
Леха Новиков, [02.07.21 15:38]
[In reply to Alexander B]
Нет, тот кого ты хочешь проверить на пингвиновость
Леха Новиков, [02.07.21 15:38]
Можно проверять сразу на несколько признаков, тогда конечных точечек будет несколько
Леха Новиков, [02.07.21 15:38]
Например, кошки, собаки, люди, лодки
Леха Новиков, [02.07.21 15:39]
Сразу узнаёшь что из этого есть на фото
Леха Новиков, [02.07.21 15:39]
Можно даже наоборот, по набору признаков генерировать точки изображения
Alexander B, [02.07.21 15:39]
ну этот ты описал случай обученной нейронной сети, а если ей только предстоит обучиться
Alexander B, [02.07.21 15:40]
что изначально стоит в слоях посередине
Леха Новиков, [02.07.21 15:40]
[In reply to Alexander B]
Тогда ты сначала расставляешь веса векторов как угодно, получаешь хер знает какой результат, и начинаешь их менять так чтобы он приблизился к нужному
Леха Новиков, [02.07.21 15:41]
[In reply to Alexander B]
Ничего, они пустые. В них будут промежуточные значения при вычислениях
Alexander B, [02.07.21 15:41]
а веса векторов где хранятся - в какой-то матрице?
Alexander B, [02.07.21 15:42]
и каков алгоритм их меняния, чтобы приблизиться к нужному?
Леха Новиков, [02.07.21 15:42]
[In reply to Alexander B]
Ну ты ж программист, сохрани где нибудь
Леха Новиков, [02.07.21 15:44]
[In reply to Alexander B]
Много разных. Самый грубый - посчитать разницу между полученным значением и требуемым и начинать потихоньку двигать весь этот набор векторов в сторону уменьшения разницы. Так ты найдёшь грубо говоря локальный минимум (представь это как многомерную поверхность в которой ты ищешь ямку, просто двигаешься в сторону уклона и всё). Но тебе нужен не локальный минимум а минимум вообще, и ты начинаешь по разному выпендриваться чтобы его найти
Alexander B, [02.07.21 15:46]
а количество слоев посередине на что влияет?
Леха Новиков, [02.07.21 15:48]
[In reply to Alexander B]
Ну типа больше всяких факторов получается учесть, нейросеть становится аккуратнее. Сам подумай, если например промежуточных слоёв вообще нет, из входных сразу считаются выходные через один набор векторов - эту штуку не научить распознавать пингвина, пингвиновость не зависит напрямую от миллиона входных точек
Alexander B, [02.07.21 15:50]
я просто не понимаю, почему это вообще срабатывает, вот пришли входные данные (числа) - отправились по первому слою векторов (домножившись на первый слой весов), потом отправились ко второму слою по стрелочкам (домножившись на второй слой весов) - дальше то что?
Alexander B, [02.07.21 15:50]
что означает число в конце?
Леха Новиков, [02.07.21 15:53]
[In reply to Alexander B]
Это срабатывает потому что если что-то подгонять - оно подгоняется. Ты взял например чайник и бьёшь его молотком в сторону наименьшего отличия от совы, и со временем он станет похож на сову. Так и тут, ты ищешь веса векторов которые лучше всего будут распознавать пингвинов - и потихоньку весь этот механизм становится похож на функцию распознавания пингвинов
Леха Новиков, [02.07.21 15:54]
https://twitter.com/Anri__Tina/status/1406954221606510592
Alexander B, [02.07.21 15:54]
что означает число в конце?
Alexander B, [02.07.21 15:54]
[In reply to Леха Новиков]
это ленин, сделанный нейросетью?
Леха Новиков, [02.07.21 15:55]
[In reply to Alexander B]
Нет, молотком. Это к аналогии про чайник и сову
Леха Новиков, [02.07.21 15:55]
[In reply to Alexander B]
То что ты хочешь. Ты хотел распознавать пингвинов - мнёшь в сторону лучшего распознавания пингвинов. Хочешь распознавать сиськи - мнёшь сиськи
Alexander B, [02.07.21 15:56]
приведи пример - это число чему может быть равно
Alexander B, [02.07.21 15:56]
у него есть диапазон?
Леха Новиков, [02.07.21 15:57]
[In reply to Alexander B]
[0,1]
Леха Новиков, [02.07.21 15:57]
Я же с этого начал
Alexander B, [02.07.21 15:57]
вот если я хочу пингвина, к какому числу эта нейросеть должна сходиться?
Alexander B, [02.07.21 15:57]
как это определяется
Леха Новиков, [02.07.21 15:58]
[In reply to Alexander B]
Ты хочешь узнать есть ли на фото пингвин. Получаешь 0.97 - явно пингвин. 0.09 - явно нет. 0.54 - хз пингвин или не пингвин.
Alexander B, [02.07.21 15:59]
вот теперь я понял - пингвин - это в окрестности 1
Леха Новиков, [02.07.21 16:00]
[In reply to Alexander B]
Пингвиновость. Это число от 0 до 1. Считай что это вероятность пингвина. Или похожесть на него.
Alexander B, [02.07.21 16:00]
я понял, что если что-то подгонять - оно подгонится - я не понял почему подгонять решили именно так? еще я не понимаю сколько шариков внутри каждого слоя, отчего это зависит?
Леха Новиков, [02.07.21 16:01]
[In reply to Alexander B]
Ну а как иначе подгонять? Тебе нужна функция максимально близкая к требуемой, ты и подгоняешь при помощи поиска максимальной близости
Леха Новиков, [02.07.21 16:01]
[In reply to Alexander B]
Сколько твой комп потянет столько и можешь делать шариков
Леха Новиков, [02.07.21 16:02]
Ты же понимаешь что количество векторов - это количество связей всех со всеми между каждыми двумя слоями
Леха Новиков, [02.07.21 16:03]
Ты охренеешь их подгонять когда их много
Alexander B, [02.07.21 16:03]
а если захерачить достаточно много слоев и достаточно много шариков пингвин будет хорошо находиться?
Леха Новиков, [02.07.21 16:03]
[In reply to Alexander B]
Да
Alexander B, [02.07.21 16:04]
короче я вроде понял, то есть есть типа функция с n аргументами, и мы линейно над ними глумимся, чтобы они превращались в единичку за счет подбора различных чиселок?
Леха Новиков, [02.07.21 16:04]
[In reply to Alexander B]
Сейчас в Москве внедрили новую систему распознавания которая ищет не только по лицу но и по одежде, походке, и другим факторам. Так что она может не просто найти пингвина - она может найти тебя среди десяти миллионов похожих мужиков
Леха Новиков, [02.07.21 16:05]
[In reply to Alexander B]
Да. Только когда ты их на каждом шаге ужимаешь в 0,1 это уже получается не линейно
Alexander B, [02.07.21 16:06]
а ужимать надо на каждом шаге, чтобы все чиселки во всех шариках оставались в рамках [0;1] ?
Леха Новиков, [02.07.21 16:07]
[In reply to Alexander B]
Да. Иначе пойдёт полный раздрай, например одно сильно большое число перевесит вообще всё при любых коэффициентах
Леха Новиков, [02.07.21 16:08]
Ну короче, кривой подгон кривого подгона, который на очень больших числах как-то работает
Леха Новиков, [02.07.21 16:09]
Типа даёт результат статистически близкий к нужному
Alexander B, [02.07.21 16:11]
Понятно
Alexander B, [02.07.21 16:11]
Круто
Леха Новиков, [02.07.21 16:11]
Когда тебе самому впадлу писать какую-нибудь сложную функцию, например алгоритм игры в шахматы - херачишь миллиард шариков и векторов, пол года учишь, и вот эта хрень выдаёт тебе ходы статистически близкие к правильным. Зачастую, она может учесть больше факторов чем ты сам когда составляешь алгоритм
Леха Новиков, [02.07.21 16:13]
Компу не надо платить зарплату, и думает он быстрее. По этому зачастую проще залить всё вычислительной мощью и найти статистически близкий вариант, чем платить программистам за точный алгоритм
Леха Новиков, [02.07.21 16:13]
Но только если тебе не нужна точность
Леха Новиков, [02.07.21 16:14]
Калькулятор ты так не сделаешь, сам понимаешь
Alexander B, [02.07.21 16:16]
А что еще так не сделаешь?
Alexander B, [02.07.21 16:20]
Из того что очень надо сделать
Леха Новиков, [02.07.21 16:23]
[In reply to Alexander B]
Ничего точного. Когда тебе нужна любая конкретика. Эта хрень даёт результат только примерно похожий на желаемый
Леха Новиков, [02.07.21 16:24]
Вот например нейросеть которая генерит картинки по тексту (вроде лучше понимает английский)
https://deepai.org/machine-learning-model/text2img
Alexander B, [02.07.21 16:27]
вот интересно, а можно ли сделать операционную систему с помощью нейросети?)
Alexander B, [02.07.21 16:28]
[In reply to Леха Новиков]
а это как?
Леха Новиков, [02.07.21 16:29]
[In reply to Alexander B]
[ Photo ]
Alexander B, [02.07.21 16:29]
[In reply to Леха Новиков]
[ Photo ]