Леха Новиков, [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
Al exander 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 ] |