Добрый вечер, хотел бы уточнить один момент. на 10:57 Вы выводите формулу Ct Ct = Ft * Ct-1 + at +Ct-1 Но ведь по рисункам мы сначала забываем ненужное - это как раз Ft*Ct-1 , а потом добавляем нужное новое, но это как раз at. Не понимаю зачем у Вас там написано at+Ct-1 Т.е. формула должна быть Ct = Ft * Ct-1 + at естественно * и + поэлементно. Подскажите, пожалуйста как все таки правильно будет?
Спасибо за урок! Можете пожалуйста ответить: почему то, что мы выучили до этого, нам вдруг может понадобится "забыть"? По правде говоря пример в конце видео выглядит не совсем развернутым. Так же непонятно, почему новый контент нужно умножать на оценочный вектор (в целом понимаю что из нового нам не все может быть нужно, но конкретный пример пока придумать не получается). Так же не получается придумать пример того, как может улучшить ситуацию оценочный вектор на выходе. Если не трудно, можете пожалуйста привести пример предложения/набора предложений, в рамках которого все эти вентили имели бы смысл? Так же непонятно с какой целью "память" нормируется через tanh, какая в этом есть необходимость?
Спасибо! А я правильно понимаю, что невозможно совместить LSTM и переменное кол-во входных данных как для RNN? Или фиксированный входной объем не проблема в силу наличия состояния для LSTM?
Ячейки LSTM работают по тому же принципу, что и нейроны в RNN, поэтому теоретически можно подавать переменное число данных (я имею в виду переменное множество входных векторов x1, x2, ..., xN). Но в Keras заранее указываются все размерности, поэтому если данных нет, то пишем нули ))
Там, где происходит конкатенация, вектора подаётся напрямую в полносвязный слой, а он уже преобразует входный вектор в определённую размерность. Вообще, её можно воспринимать так, как будто бы на вход полносвязного слоя подаётся два вектора с необходимыми данными, как будто бы два входа.
Чувствую, что скоро ИИ также будет друг другу объяснять как устроены нейроны у людей: "На следующем занятии мы разберем как эти кожаные мешки учатся говорить и почему это происходит так долго, а не за пару часов"))
Смех, смехом, а такие попытки уже делаются: одна нейронная сеть учится проектировать другую. Или, нейросеть, которая пишет программы. Так что, вы недалеки от истины ))
@@selfedu_rus Это скорее итерический смех, тк когда начинаешь думать, о том как прогрессирует эта область, фильм "Терминатор" становится совсем не фантастическим, а документальным. Уже выпускают процессоры с архитектурой специально заточенной под определенную нейронку. Вот и получается, что нейронки из обычных наборов чисел в компьютере превращаются в маленький кремневый мозг)
@@selfedu_rusэто уже реальность. Bing на мощностях GPT-4 легко мне написал LTSM нейросеть с нуля на С++ где то в 300 строк кода, и причем с первой попытки все работает и компилируется. Так что нейросеть написала другую нейросеть
@@endlessvdНу, просто написать код это довольно тривиальная задача для НС. А вот добиться полного и абсолютного понимания работы архитектуры(не просто написать заученные определения из документации) это сложно. Надеюсь в будущем увидим настоящий, исскуственный интелект, ибо каноничный и действительно думающий и похожий на человеческий интелект еще не изобретен.
Из-за того что в этом уроке использовались совершенно другие типы обозначения блоками, совершенно не понятно что тут происходит. Вам нужно было расписать этот блок в старом формате
@@selfedu_rus В 2017 году появилась архитектура трансформер - совершенно новый уровень обработки последовательностей с помощью нейронных сетей. Его мощность была настолько велика, что все LSTM и GRU отбросились в прошлый век.
@@selfedu_rus Сергей, спасибо что делаете такое больше дело. Очень прошу, помогите с проблемой. Сломал всю голову. Делаю рекуррентную сеть по приницпу энкодер-декодер. Т.е. на вход и выход подаются последовательности разной длины. при тренировке сети пишу: results = model.fit({'encoder_input':x, 'decoder_input':y1}, y2, epochs=1) и обучение проходит без проблем. Т.е. сеть построена правильно, но когда я отправляю данные в predict выдает ошибку разной длины. res = model.predict([{'encoder_input':x[0], 'decoder_input':y1[0]}]) ошибка "Data cardinality is ambiguous: x sizes: 7, 10 Make sure all arrays contain the same number of samples."
Сколько не смотрел на эту тему обучающих видео, данное объяснение самое лучшее и самое понятное. Прекрасная подача материала !
Поздравляю Вас со 100к подписчиков!!!
Как всегда на высшем уровне!
Это лучшее что я видел
Супер понятно, спасибо большое
Добрый вечер, хотел бы уточнить один момент.
на 10:57 Вы выводите формулу Ct
Ct = Ft * Ct-1 + at +Ct-1
Но ведь по рисункам мы сначала забываем ненужное - это как раз Ft*Ct-1 , а потом добавляем нужное новое, но это как раз at. Не понимаю зачем у Вас там написано at+Ct-1
Т.е. формула должна быть
Ct = Ft * Ct-1 + at естественно * и + поэлементно.
Подскажите, пожалуйста как все таки правильно будет?
Спасибо за урок! Можете пожалуйста ответить: почему то, что мы выучили до этого, нам вдруг может понадобится "забыть"? По правде говоря пример в конце видео выглядит не совсем развернутым. Так же непонятно, почему новый контент нужно умножать на оценочный вектор (в целом понимаю что из нового нам не все может быть нужно, но конкретный пример пока придумать не получается). Так же не получается придумать пример того, как может улучшить ситуацию оценочный вектор на выходе. Если не трудно, можете пожалуйста привести пример предложения/набора предложений, в рамках которого все эти вентили имели бы смысл? Так же непонятно с какой целью "память" нормируется через tanh, какая в этом есть необходимость?
Спасибо! А я правильно понимаю, что невозможно совместить LSTM и переменное кол-во входных данных как для RNN?
Или фиксированный входной объем не проблема в силу наличия состояния для LSTM?
Ячейки LSTM работают по тому же принципу, что и нейроны в RNN, поэтому теоретически можно подавать переменное число данных (я имею в виду переменное множество входных векторов x1, x2, ..., xN). Но в Keras заранее указываются все размерности, поэтому если данных нет, то пишем нули ))
Если там происходит конкатенация на входе, то как формируется обратная связь? Выход же подаётся на вход. Таким образом размерность вектора будет расти
Там, где происходит конкатенация, вектора подаётся напрямую в полносвязный слой, а он уже преобразует входный вектор в определённую размерность. Вообще, её можно воспринимать так, как будто бы на вход полносвязного слоя подаётся два вектора с необходимыми данными, как будто бы два входа.
Чувствую, что скоро ИИ также будет друг другу объяснять как устроены нейроны у людей: "На следующем занятии мы разберем как эти кожаные мешки учатся говорить и почему это происходит так долго, а не за пару часов"))
Смех, смехом, а такие попытки уже делаются: одна нейронная сеть учится проектировать другую. Или, нейросеть, которая пишет программы. Так что, вы недалеки от истины ))
@@selfedu_rus Это скорее итерический смех, тк когда начинаешь думать, о том как прогрессирует эта область, фильм "Терминатор" становится совсем не фантастическим, а документальным. Уже выпускают процессоры с архитектурой специально заточенной под определенную нейронку. Вот и получается, что нейронки из обычных наборов чисел в компьютере превращаются в маленький кремневый мозг)
@@dubinin_s , Пусть оладушки мне готовит. Учиться только у лучшей - у бабушки. А то чудо-техника и без оладушек - некондиция какая-то! :)
@@selfedu_rusэто уже реальность. Bing на мощностях GPT-4 легко мне написал LTSM нейросеть с нуля на С++ где то в 300 строк кода, и причем с первой попытки все работает и компилируется. Так что нейросеть написала другую нейросеть
@@endlessvdНу, просто написать код это довольно тривиальная задача для НС. А вот добиться полного и абсолютного понимания работы архитектуры(не просто написать заученные определения из документации) это сложно. Надеюсь в будущем увидим настоящий, исскуственный интелект, ибо каноничный и действительно думающий и похожий на человеческий интелект еще не изобретен.
Объединение векторов это типа конкатенация?
да
@@selfedu_rus спасибо
Из-за того что в этом уроке использовались совершенно другие типы обозначения блоками, совершенно не понятно что тут происходит. Вам нужно было расписать этот блок в старом формате
А почему LSTM была "рабочей лошадкой" до 2017 года. Появилось что-то другое?
да, более простой блок GRU дает часто схожие результаты, но обучается быстрее (по объему вычислений)
@@selfedu_rus Можете подсказать, нейросеть на базе LSTM или GRU использует только один или несколько таких блоков?
@@ХристианБелов один, схема здесь proproprogs.ru/neural_network/kak-delat-sentiment-analiz-rekurrentnoy-lstm-setyu (в конце текста)
@@selfedu_rus В 2017 году появилась архитектура трансформер - совершенно новый уровень обработки последовательностей с помощью нейронных сетей. Его мощность была настолько велика, что все LSTM и GRU отбросились в прошлый век.
@@selfedu_rus Сергей, спасибо что делаете такое больше дело. Очень прошу, помогите с проблемой. Сломал всю голову. Делаю рекуррентную сеть по приницпу энкодер-декодер. Т.е. на вход и выход подаются последовательности разной длины. при тренировке сети пишу: results = model.fit({'encoder_input':x, 'decoder_input':y1}, y2, epochs=1) и обучение проходит без проблем. Т.е. сеть построена правильно, но когда я отправляю данные в predict выдает ошибку разной длины. res = model.predict([{'encoder_input':x[0], 'decoder_input':y1[0]}]) ошибка "Data cardinality is ambiguous: x sizes: 7, 10 Make sure all arrays contain the same number of samples."
Знак операции "сумма по модулю 2" сбивает с толку....
А ссылочку на статью, откуда все взял забыл оставить.