• Что значит базовая математика для программиста?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Я ЕГЭ не сдавал, но школьная математика - это игра в песочнице по сравнению с нормальной, вузовской математикой. Непременно уткнётесь в эту стену после первых пары-тройки лет в IT, как только потребуется разбираться с оптимизацией чего-нибудь, например.
    Ответ написан
    Комментировать
  • Как сделать нейронную сеть, что бы она обучалась игре?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    "как передать картинку с игры в программу" - как правило, для обучения используются не сама исходная игра, а её эмулятор.
    Есть такой портал https://gym.openai.com/ который как раз предназначен для подобных вещей, там реализована куча эмуляторов различных простых игр
    Ответ написан
    Комментировать
  • Каким должен быть ответ нейронной сети (выходные данные)?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    1. Диапазон выходного значения зависит от функции активации на выходе. Если нам нужно бинарное значение 0/1 - используют sigm. Если надо неотрицательное (когда кодируем цвет, например) - используют relu. Если надо просто вещественное - то никакой функции активации не надо. Если нужно вещественное в каком-то диапазоне (например, -50/+50) - можно попробовать tanh и просто дополнительно домножать его на 50.

    2. Нормализация данных бывает полезна, но не обязательна. В случае с температурой можно, например, попробовать задавать не абсолютные значения, а относительные - как она изменилась по сравнению с предыдущим днём.

    3. Для работы с последовательностью данных (t-3, t-2, ...) обычно используют конкретную архитектуру нейронных сетей - рекуррентные нейронные сети, которые для каждого нового t перевычисляют у себя какое-то внутреннее состояние и выдают новое значение исходя из этого состояния и входного значения. Самое простое, что можно сделать, чтобы такая сеть выдавала несколько предсказаний t+1,t+2,t+3 - это попробовать подать ей на вход пустые t,t+1,t+2. Хотя не факт, что получится. Обычно, чтобы из последовательности данных сгенерить другую последовательность, используют архитектуру sequence-to-sequence, seq2seq.

    4. Чем больше вариативность выходных данных; чем сложнее функция, которую надо обучиться нейронной сети - тем, разумеется, сложнее\дольше\менее точно будет происходить само обучение.
    Ответ написан
    Комментировать
  • В какой IT профессии больше всего требуется креативность?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Дизайнер интерфейсов; тестировщик, наверное; r&d отдел какой-нибудь более-менее крупной компании.
    Ответ написан
    1 комментарий
  • Проблемы ИИ в философии?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Пенроуз "Новый ум короля"
    Минский The Society of Mind вроде бы довольно известная вещь (сам не читал)
    "Большое, малое и человеческий разум" Пенроуза и Хокинга, там последняя треть - про разум и мышление
    Курцвейл "Как создать разум"

    Вот этот товарищ любопытный: www.aboutbrain.ru
    Ответ написан
    Комментировать
  • Какие рекурентные сети можно применить для групп связанных данных?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Из описания задачи не следует, что эти группы представляют собой последовательность данных.

    Если группы - это просто неупорядоченные множества, то можно попробовать просуммировать в цикле их фичи через attention
    Ответ написан
    Комментировать
  • Как правильно приготовить данные для обучения сети?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    1. Дело ведь еще не только в объеме датасета, но и в его полноте. При ошибочном построении сети обычно вообще ничего не обучается. Недостаточный размер слоев легко заметить просто увеличив его и прогнав обучение еще раз. По объемам - про классификацию текста где-то видел, что SVM дает лучший результат при объеме выборки где-то от 2000 до 50000, нейронные сети - от 50000.
    3. Это назвается интерпретируемостью нейронной сети \ алгоритма. В этом направлении есть какие-то исследования (как добиться того, чтобы глядя на активацию нейронов понимать, что и почему делает НС), но серьезных решений вроде нету. Лучший способ - это хороший тестовый набор, на котором будет видны кластеры ошибок.
    4. Всё сильно зависит от сложности каждой конкретной задачи. Готовой формулы нет.
    Ответ написан
    Комментировать
  • Какие есть библиотеки для построения ANN в Python?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Tensorflow от гугла. Там есть много мелких полезностей; seq2seq с attention и beam search на нем, например, довольно просто запилить.
    Keras - ранее был слоем абстракции над Theano и Tensorflow, но Theano приказал долго жить, и Keras влился в TF. Позволяет быстрее делать простые вещи.
    Еще есть MXNet от Apache.
    Ответ написан
    Комментировать
  • С чего лучше начать обучение искусственному интеллекту?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Мне по ИИ больше всего вот этот цикл лекций понравился: https://www.youtube.com/playlist?list=PLUl4u3cNGP6...

    Вообще искусственный интеллект = машинное обучение + еще много чего; машинное обучение = нейронные сети + еще много чего. Но последние 5 лет нейронные сети очень бурно развиваются, так что сейчас в неспециалисты часто между этими понятиями ставят знаки равенства. Горячие области исследований НС - это обработка изображения, обработка текста, обработка речи, обучение с подкреплением (это копают в направлении "сильного ИИ"), математические основы работы нейронных сетей.

    Курсы с известных MOOC-платформ - полезны. На сертификаты, как я понимаю, смотрят только хедхантеры, когда рынок просеивают на очередную вакансию. На собеседованиях никто про них спрашивать не будет. Главные предметы, которые надо знать, - это вычмат, теория алгоритмов, программирование на каком-нибудь языке использующемся в этой области (например, Python). Особенно вычмат.

    С нуля на более-менее нормальный уровень можно, наверно, года за два выйти, если часов по 6-8 в неделю тратить.
    Ответ написан
    1 комментарий
  • Как определить количество нейронов в нейросети?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Какой-то формулы для определения размера скрытых слоев нет. Часто его определяют путем перебора или исходя из здравого смысла.
    Ответ написан
    Комментировать
  • Существует ли в открытом доступе нейронная сеть для чатбота (ChatBot)?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Если хочется простой seq2seq - то, например, https://www.tensorflow.org/tutorials/seq2seq
    Но обучение модели - это обычно от силы 20% всей работы, а то и меньше. Остальное - это найти данные для обучения, очистить их, сделать удобный api над моделью,...
    Ответ написан
    Комментировать
  • Как написать Hello world для нейронной сети?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Можно попробовать взять рекурентную сеть, которая на вход будет получать два числа в виде последовательностей их цифр, а на выходе выдавать последовательность-сумму чисел. Она должна достаточно легко выучить правила сложения и переноса в следующий разряд.
    Ответ написан
  • Tensor Tensor("activation_5/Softmax:0", shape=(?, 2), dtype=float32) is not an element of this graph?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Модель должна загружаться в ту же сессию Tensorflow, что будет использоваться дальше для предсказаний.
    Ответ написан
    6 комментариев
  • Нейронная сеть, какой должен быть диапазон весов?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Тип входных и выходных значений зависит от того, какой смысл вы в них вкладываете и от архитектуры сети (в частности, функций активации на выходах нейронов).

    При обработке текста, например, часто на вход подается последовательность id'шников слов в предложении - соответственно, это целые числа от 0 до <количество слов в словаре>.
    При обработке изображений часто используют функцию активации ReLU, выход которой - неотрицательные числа.

    Нормализация на входе бывает полезна, когда изначально диапазон фич сильно отличается друг от друга, но по смыслу они примерно равны, а сами фичи - это вещественные числа (например, если входные данные - это длина сосульки на крыше в миллиметрах и температура на улице в градусах; первая фича имеет порядок сотен-тысяч, вторая - десятки-единицы).

    Способ инициализации весов в слоях имеет большое значение для того, насколько хорошо будет отрабатывать backprop. Но эта область уже достаточно хорошо изучена, и везде по умолчанию используется стандартные решения вроде инициализации по Глороту или ортогональной инициализации. Так что тут беспокоиться не надо.

    "сколько должно пройти итераций что бы веса с 0.1.. спустились до 0.0001.." можно перефразировать как "почему backprop работает медленно и как его ускорить". Это вообще одна из фундаментальных задач в DL. Инициализация весов - один из способов частичного решения. Различные функции активации - другой. Новые архитектуры слоев - третий. Модификация обучающих данных - четвертый. И так далее.
    Ответ написан
    Комментировать
  • Чего ожидает компания от Trainee?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Что он придёт обратно, когда получит диплом.
    Ответ написан
    Комментировать
  • Почему при последовательном создании моделей в Keras они каким-то образом между собой зависят, хотя, наверное, не должны?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Возможно, глобальный инкремент в номерах слоев может быть связан с тем, что сессия Tensorflow хранится в Keras глобально в tensorflow_backend.py и названия переменных по умолчанию должны быть уникальны в рамках сессий. Это если бэкенд - TF.
    Ответ написан
    5 комментариев
  • Как уменьшить размерность задачи для обучения нейронной сети?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Можно попробовать что-нибудь стандартное типа PCA. Но лучше бы получить информацию о характере возможного заполнения матрицы и попридумывать свои фичи. Построчная сумма - один из вариантов.

    Входной слой в 5000 нейронов - это еще не значит, что размерность надо уменьшать. Её надо уменьшать, если из-за длины вектора обучение длится неприемлимо долго.
    Ответ написан
    Комментировать