pusheen_machine | Technologies

Telegram-канал pusheen_machine - Pusheen Machine

1007

Папка с закладками про машинное обучение, искусственный интеллект, интересные статьи, идеи из книжек и разные полезные штуки для всех интересующихся. Чтобы отправить ваш материал - пишите админу @galperovich https://vk.com/pusheen_machin

Subscribe to a channel

Pusheen Machine

Как сделать так, чтобы data science проект не превратился в бардак

1. Использовать git

2. Придерживаться жесткой структуры проекта с кодом, например как в Cookiecutter http://drivendata.github.io/cookiecutter-data-science/#directory-structure

3. Придерживаться одного code style https://www.python.org/dev/peps/pep-0008/

4. Использовать один virtual environment для проекта и сэкспортировать его в requirements.txt

5. Писать небольшие unit тесты (например py.test) для функций и следить с помощью них за корректностью и воспроизводимостью ваших результатов. Можно попробовать написать тесты даже на модели и preprocessing шаги

6. Выделять классы, методы, делать их универсальными и простыми, пользоваться Single responsibility principle https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%B5%D0%B4%D0%B8%D0%BD%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8

7. Вести небольшую вики с описанием экспериментов

8. Трекать performance ваших моделей чтобы позже можно было их легко сравнивать

9. Чтобы автоматизировать какие-то повторяющиеся шаги, можно использовать make или написать скрипт самому (bash или python), вот тут пример make в подобных задачах https://bost.ocks.org/mike/make/

10. Писать в нормальном редакторе, который будет вам помогать разрабатывать быстрее и подсказывать где у вас ошибки (например PyCharm Community, он бесплатный)

11. В Jupyter notebook следить за тем, чтобы он был воспроизводимым, там хватало всех важных селлов и импортов, писать время от времени markdown, удалять селлы, в которых вы экспериментировали, и они не относятся к общему скрипту. В начале скрипта, опять же в markdown, можно описать что тут вообще происходит, тогда вы сами себя поблагодарите через месяц 😏

Если у вас есть ваши секреты как следить за проектом - дайте знать, добавим в пост 🙂

Читать полностью…

Pusheen Machine

Автоэнкодер - это такая нейронная сеть, которая преобразует входные данные (чаще всего сжимает) и пытается предсказать на выходе то, что у нее было на входе. Внутри сеть имеет hidden слой h, который является "кодом", представляющим входные данные. Сеть принимает на вход x и состоит из 2 частей: энкодер h = g(x) и декодер x' = f(g(x)), который реконструирует данные x. Обычно слой h по размерности меньше, чем входной (такой bottleneck получается), и в этом слое оседает только реально важная инфа для реконструкции оригинальных данных. В итоге мы получаем сеть, которая кодирует данные x (делает их representation в некотором latent space), и потом декодирует их, пытаясь получить то, что было изначально. Используется loss функция L(x, f(g(x))) + regularizer. Сеть пытается построить приблизительное отображение x = f(g(x)), и таким образом вычленить из входных данных только самую важную информацию, необходимую для реконструкции.

Зачем это надо?

- Уменьшить размерность: если input был из 1000 фич, а слой h сделать в 25 нейронов, то после обучения мы получим сеть, которая уменьшая размерность, все равно хорошо реконструирует исходные данные, значит в h оседает самая важная информация про input, но размерности 25 вместо 1000
- Такой "код" можно использовать как входные фичи для других алгоритмов
- Убрать шум: если добавить шум к своим картинкам, а во время обучения пытаться приближать их к незашумленным, то после обучения сеть сможет убирать шум для реально зашумленных картинок
- Anomaly detection - можно натренировать автоэнкодер на неаномальном классе, но не показывать аномальный. Потом, если показать аномальный экземпляр и посчитать ошибку реконструкции, то ошибка будет больше, чем была для неаномального класса
- Такой же трюк можно сделать для классификации (натренировать на одном классе, а потом показать экземпляр другого и посчитать ошибку реконструкции)
- Использовать как генеративную модель для генерации данных, похожих на нашу выборку (научиться семплить из того latent space, которое мы получили)

Вот отличный туториал по автоэнкодерам: https://habrahabr.ru/post/331382/
А вот тут глава из книги Deep learning: http://www.deeplearningbook.org/contents/autoencoders.html

Читать полностью…

Pusheen Machine

Наткнулась на интересную статью, в которой рассказывается о том как оценить Баейесовскую ошибку (Bayes error) через ансамбль классификаторов.

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

А в этой статье чуваки предложили метод как такую оценку можно легко получить из результатов ансамбля классификаторов, и тому как классификаторы друг с другом не согласны (см формулу 20).

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.330.3596&rep=rep1&type=pdf

Читать полностью…

Pusheen Machine

В Канаде, при Университете Монреаля, есть лаборатория "Institute for Learning Algorithms", в которой зародились многие принципы deep learning, и которую основал Yoshua Bengio (тот самый, который был соавтором книги Deep Learning).

Там ежегодно летом проходят Deep learning Summer School, где рассказывают state-of-the-art штуки, новые технологии и разработки. Попасть туда наверняка непросто, а цена колеблется от $500 до $2000. Но в открытом доступе есть все видео, презентации и даже лабы с 2015, 2016 и 2017 годов! Мой внутренний нищеброд ликует :)

🍁 2015

Сайт: https://sites.google.com/site/deeplearningsummerschool/
Видео + презентации: http://videolectures.net/deeplearning2015_montreal/
Материалы: https://github.com/mila-udem/summerschool2015

🍁 2016

Сайт школы: https://sites.google.com/site/deeplearningsummerschool2016/home
Видео + презентации: http://videolectures.net/deeplearning2016_montreal/
YouTube: https://www.youtube.com/playlist?list=PL5bqIc6XopCbb-FvnHmD1neVlQKwGzQyR
Материалы: https://github.com/mila-udem/summerschool2016

🍁 2017 (в этом году она стала называться Deep learning and Reinforcement learning Summer School)

Сайт школы: https://mila.umontreal.ca/en/cours/deep-learning-summer-school-2017/
Видео + презентации: http://videolectures.net/deeplearning2017_montreal/
Слайды: https://mila.umontreal.ca/en/cours/deep-learning-summer-school-2017/slides/
Материалы: https://github.com/mila-udem/summerschool2017/

Читать полностью…

Pusheen Machine

Использование совместно Reinforcement Learning и Deep Neural Networks сейчас в тренде, поэтому вот несколько крутых материалов по Reinforcement Learning:

Курс Reinforcement Learning http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html
Youtube video из курса: https://www.youtube.com/watch?v=2pWv7GOvuf0&list=PL7-jPKtc4r78-wCZcQn5IqyuWhBZ8fOxT
Имплементированные алгоритмы на Python с использованием OpenAI Gym и Tensorflow: https://github.com/dennybritz/reinforcement-learning

Лекция на YouTube от Andrew Ng на час https://www.youtube.com/watch?v=RtxI449ZjSc
Черновик книги: http://incompleteideas.net/sutton/book/bookdraft2017june.pdf
Курс Deep Reinforcement Learning (Berkeley) http://rll.berkeley.edu/deeprlcourse/

Читать полностью…

Pusheen Machine

Andrew Ng запустил новую специализацию по deep learning на Coursera, и она состоит из 5 коротких курсов:

1. Neural Networks and Deep Learning
2. Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
3. Structuring Machine Learning Projects
4. Convolutional Neural Networks
5. Sequence Models

Кроме того, каждую неделю Андрю берет интересные интервью у крутых чуваков из deep learning и задает им насущные вопросы.
Я сейчас прохожу первый курс, и могу сказать, что даже не смотря на то, что многие вещи уже знаю, Андрю рассказывает все так, что все равно узнаешь что-то новое. Поэтому очень советую эту специализацию всем, кто сомневается в своих знаниях по теме, ну и новичкам конечно же тоже!

https://www.coursera.org/specializations/deep-learning

Читать полностью…

Pusheen Machine

В этой группе https://vk.com/yandex4developers ребята транслируют субботние тренировки по машинному обучению. Там подробно разбирают задачи (с Kaggle например), можно послушать умных людей

Читать полностью…

Pusheen Machine

Еще один новый инструмент, который поможет программистам внедрять ML модели в их код - Gluon от Microsoft и Amazon. Это интерфейс для быстрого прототипирования и обучения нейронных сетей. AI в массы🍿

https://news.microsoft.com/2017/10/12/aws-and-microsoft-announce-gluon-making-deep-learning-accessible-to-all-developers/

Читать полностью…

Pusheen Machine

Microsoft запускает много новых AI инструментов! Инструменты поддерживают популярные фреймворки, и не только от Microsoft

🔧Azure Machine Learning Experimentation и Azure Machine Learning Model Management - тренировать, деплоить и мониторить ML модели

🔧Azure Machine Learning Workbench - кросс-платформенное десктоп приложение для анализа данных, интегрированное с Jupyter, PyCharm, Visual Studio Code, позволяет строить модели на Python, PySpak и Scala

🔧Расширение для Visual Studio Code IDE для разработчиков, которых хотят внедрять в свой код ML модели (поддержка CNTK, TensorFlow, Theano, Keras и Caffe2)

🔧Расширение для Excel, которое позволяет вызывать AI функции прямо из spreadsheet (можно написать кастомные функции и предоставить для них API)

Официальный пост: https://azure.microsoft.com/en-us/blog/diving-deep-into-what-s-new-with-azure-machine-learning/
Techcrunch: https://techcrunch.com/2017/09/25/microsoft-launches-new-machine-learning-tools/

Читать полностью…

Pusheen Machine

✨ Weekend Newsletter

📎 Парочка новых платформ для ML соревнований типа Kaggle: EvalAI evalai.cloudcv.org и российский Arktur arktur.io (но там еще мало соревнований)

📎 Возможно, в Монреале скоро будет новый AI hub https://www.fastcompany.com/40465968/facebooks-new-lab-bolsters-montreals-bragging-rights-as-an-ai-hub

📎 Еще одно рассуждение про ML vs Statistics от представителей обеих областей: http://www.kdnuggets.com/2017/08/machine-learning-vs-statistics.html

📎 Крутая карта метро, описывающая основные вещи, которые надо знать дата саентисту :) Каждая ветка означает специфичную область: http://nirvacana.com/thoughts/wp-content/uploads/2013/07/RoadToDataScientist1.png Начинать читать надо с левого нижнего угла "Fundamentals"

📎 Decision tree для того как выбирать ML алгоритм для решения задачи: первая картинка http://i.imgur.com/HnRwlce.png и вторая http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

📎 Почему можно бояться AI (в том числе потому, что Путин всех напугал) https://hackernoon.com/ai-scary-for-the-right-reasons-185bee8c6daa

📎 Как задавать вопрос SQL базе на естественном языке с помощью reinforcement learning https://techcrunch.com/2017/08/29/salesforce-is-using-ai-to-democratize-sql-so-anyone-can-query-databases-in-natural-language/ а вот сама статья https://einstein.ai/static/images/layouts/research/seq2sql/seq2sql.pdf

Читать полностью…

Pusheen Machine

Интересная мысль про многомерное пространство: если взять случайную точку в единичном квадрате 1 x 1 , то вероятность того, что она будет находиться близко к границе (на расстоянии меньше, чем 0.001) будет около 0.4 %. Если взять случайную точку в 10 000 - мерном единичном гиперкубе, то эта вероятность станет больше, чем 99,99999% ! Большинство точек в многомерном пространстве находятся очень близко к границам (принимают экстремальные значения). Также, расстояние между 2 случайными точками в многомерном кубе гораздо больше, чем в двумерном, это значит, что данные в многомерном пространстве очень sparse (разреженные), а значит такие данные гораздо сложнее экстраполировать.

Это из книги “Hands-On Machine Learning with Scikit-Learn and TensorFlow”, глава Dimensionality reduction.

Читать полностью…

Pusheen Machine

Отличный туториал по RNNs с теорией, математикой и кодом (сам блог тоже крутой):

PART 1 http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/
PART 2 http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-2-implementing-a-language-model-rnn-with-python-numpy-and-theano/
PART 3 http://www.wildml.com/2015/10/recurrent-neural-networks-tutorial-part-3-backpropagation-through-time-and-vanishing-gradients/
PART 4 http://www.wildml.com/2015/10/recurrent-neural-network-tutorial-part-4-implementing-a-grulstm-rnn-with-python-and-theano/

Читать полностью…

Pusheen Machine

Давно хочу поделиться ссылками на крутейшие книги, которые я читала недавно или читаю прямо сейчас:

1. Deep learning, Ian Goodfellow and Yoshua Bengio and Aaron Courville
Книга написана людьми, которые наверно лучше всех в мире понимают deep learning, потому что именно они одни из тех, кто его "основали".
Книга бесплатно распространяется авторами онлайн http://www.deeplearningbook.org/
Или можно купить на амазоне печатную красивую версию или киндл https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618

2. Hands-On Machine Learning with Scikit-Learn and TensorFlow, Aurélien Géron
Книга, в которой показано много классных примеров "best practice", а также интересные рассуждения автора про интуицию, которая стоит за методами (но и математики там тоже довольно много).
Вот упражнения из этой книги https://github.com/ageron/handson-ml
А вот она на амазоне: https://www.amazon.com/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1491962291

3. Python Data Science Handbook: Essential Tools for Working with Data, Jake VanderPlas
Хорошая книга, особенно для начинающих дата санетистов. В ней множество примеров и "best practice" для работы с pandas, numpy, sklearn, matplotlib.
Вот код https://github.com/jakevdp/PythonDataScienceHandbook
Вот книга: https://www.amazon.com/Python-Data-Science-Handbook-Essential/dp/1491912057

4. Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin
Внезапная книга в этом списке, но если вы ее прочитаете, то будете знать как писать нормальный код, а не портянку, которой невозможно пользоваться через месяц после написания. Этот навык очень пригодится и в machine learning проектах!
Вот ссылка: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

5. The Art of Thinking Clearly, Rolf Dobelli
Просто клевая книга, в которой в каждой главе написано про какую-то человеческую когнитивную ошибку, ментальную ловушку. Мы можем думать, что мы дофига умные и логичные, но на деле мы просто люди, у которых в голове есть баги, про которые нужно знать :)
Вот книга: https://www.amazon.com/Art-Thinking-Clearly-Rolf-Dobelli/dp/0062219693
Вот хороший русский перевод (но в книге около 52 глав, а не 99) https://www.mann-ivanov-ferber.ru/books/territoriya_zabluzhdeniy/

Читать полностью…

Pusheen Machine

Обширная схема архитектур нейронных сетей

Читать полностью…
Subscribe to a channel