• Чем отличаются нейронные сети?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Нейронные сети это довольно старое направление, сугубо математическое, которое получило в последнее время очень мощный пинок под зад благодаря сильно возросшей производительности. Однако, материал по ней очень разношёрстный, очень много дезинформации. И разобраться в этом довольно сложно, особенно учитывая, что она слабо систематизирована и отрасль очень быстро развивается.

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

    И так, что мы имеем? Математический аппарат. Цель. И средства. Ну вот, это уже похоже на прогресс. Но чего нет? Адекватной классификации, большого количества хорошего материала, долгой и стабильной учебной практики. Зато вроде есть красивые материалы.

    Ну а вообще, есть отличный сборник вопросов на которые можно попробовать по отвечать. А правильно заданный вопрос - половина ответа.
    Ответ написан
    6 комментариев
  • Чем отличаются нейронные сети?

    Luonic
    @Luonic
    Студент, Unity3d, DotNet, Xamarin
    Перцептрон позволяет подобрать примерно такую функцию, которая позволит классифицировать данные или предсказывать то, какими будут неизвестные признаки у данных, обучившись на данных, для которых искомые признаки уже известны.

    Сверточный слой в нейронной сети - просто слой, который позволяет уменьшить размерность карты признаков (признаки называтся features в англоязычной литературе и лекциях). Свертки не являются противоположностью глубоких нейронных сетей, глубокие нейронные сети - это просто нейронные сети с большим, по сравнению с перцептроном, количеством слоев, только и всего. Для классификации изображений используют в основном несколько основных типов слоев: сверточный (convolutional), max pooling, ReLU (Linear Rectifier Unit), и в качестве нескольких последних слоев, для проведения самой классификации, используют полносвязные слои, как в перцептроне, а количество выходов = количеству классов для классификации.

    А глубокое обучение само определяет, сколько слоев делать, какие будут идентификаторы. Т.е. само определяет, как находить дорожный знак и конкретизировать его.

    Нет, количество слоев, их размер, размер входа НС нельзя определить автоматически. Эти параметры называются гиперпараметрами. Существуют методики их подбора, но в основном полагаются на опыт и интуицию.

    Для работы с сетями существует несколько основных фреймворков, а это Caffe (пожалуй, самый распространенный), Torch, Theano, TensorFlow. И еще есть CNTK, он подкупает тем, что может работать на 4 gpu одновременно на одной машине. Но большинство из них работают с питоном, среди data scientist'ов для управления нейросетями больше распространены скриптовые языки, или матлаб.

    В качестве совета, как изучать эту непростую тему скажу следующее: не нужно тянуться к коду и практике, пока не будет достаточно четкого понимания в теории, как все работает. Каждое видео, каждую статью нужно разбирать до слова, чтобы разжевать все, что не понятно. Что-то не ясно, гуглим, читаем, осознаем, возвращаемся к статье. Рекомендую начать с видео лекций на ютубе, там проще понять принципы работы слоев, не загружая себя математикой, так как от математики толку не будет, пока не понятны основы.

    Вот несколько ссылок:
    scs.ryerson.ca/~aharley/vis/conv - отличная интерактивная демонстрация работы сверточной сети для распознавания цифр, обученная на наборе MNIST
    https://www.youtube.com/watch?v=2aF_yhVtlH0 - вот это отличный ролик для начала
    https://www.youtube.com/watch?v=VhmE_UXDOGs
    https://youtu.be/CLSy5WlaWKc - немного скучно, но позновательно
    https://www.youtube.com/watch?v=ByjaPdWXKJ4&index=... - суперинтересно и познавательно, но после осознания основ
    Ответ написан
    5 комментариев
  • Чем отличаются нейронные сети?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Вот хорошая подборка по нейросетям (текст, формулы, принципы): тут
    Видео-лекции: тут

    Если кратко: глубинное обучение - многоуровневый (включая рекурсивный) перцептрон с пороговыми обратными связями, которые могут работать в различных режимах: как обычные связи (сети с обратным распространением) или как управляющие пороговые блокираторы (при заданном весе нейрона - блокируется обратное распространение).
    Фактически, это аналог электро-схемы с каскадами транзисторов и тиристорами.
    Ответ написан
    4 комментария