Когда не надо использовать нейросети
- https://goo.gl/Y8iEMB
#data_science
#deep_learning
Интересное в мире ML:
- Состояние NLP в 2017 - https://goo.gl/EiFPxy
- Еще раз AlphaGo - https://goo.gl/9GB3ez
- Уже появляются либы для распределенного RL - https://goo.gl/Ef9qFK
- Народ инвестирует время в reproducibility исследований - https://goo.gl/7efexv
- Uber выпустил свой фреймворк для распределенного обучения сетей - https://goo.gl/6LQyKu
Железо
- В конце 2017 появятся чипы intel для нейросеток - https://goo.gl/U2w6P8
- Не до конца понял фишки, но вроде как это софтверная прокладка между софтом для нейросетей и любыми осями и железом - http://vertex.ai/blog/announcing-plaidml - интересно что потом с этим станет
Датасеты
- Google выпускает в паблик датасет AVA с человеческими действиями - https://goo.gl/Tv6i5y
#data_science
#digest
Заметка про тренировку сетей с разным lr в pytorch. В документации написано
optim.SGD([
{'params': model.base.parameters()},
{'params': model.classifier.parameters(), 'lr': 1e-3}
], lr=1e-2, momentum=0.9)На все слои не указанные в листе lr не распространяется. Может это очевидно, но я возился 3 дня, не понимая почему модель не работает, пока не догадался до такой простой вещи - что надо переписать модель вынеся все свои функции из forward в __init отдельного класса.
Лучшее - враг хорошего.
#data_science
#pytorch
Интересное в мире интернета:
- Ben Evans - https://goo.gl/hYj6nT
- Глобальные тренды в AI - https://goo.gl/yp4dFJ - очень краткое возможностей summary sota алгоритмов
TLDR про RL
The learned agent performs much better than the hard-coded agent, but moves more jerkily and “randomly” and doesn’t know the law of reflection. Similarly, the reports of AlphaGo producing “unusual” Go moves are consistent with an agent that can do pattern-recognition over a broader space than humans can, but which doesn’t find the “laws” or “regularities” that humans do.
Perhaps, contrary to the stereotype that contrasts “mechanical” with “outside-the-box” thinking, reinforcement learners can “think outside the box” but can’t find the box?- Пост про новый AlphaGo - https://goo.gl/3JJ422
- Intel выпустит процессоры для нейросетей в конце 2017 - https://goo.gl/Gw3gHg
- Facebook включает монетизацию своих игр - https://goo.gl/pk73cT
- Нейросетка внутри Siri - https://goo.gl/WdK6dC
- Как работает портретный режим в Google Pixel - https://goo.gl/8HAkwp
- Байки про зп в долине - https://goo.gl/9EUJwd
#digest
#internet
Открылся еще один занятный конкурс про джунгли - искать обезъян на 1 ТБ видео
- https://www.drivendata.org/competitions/49/deep-learning-camera-trap-animals/
#data_science
Nvidia обновила свою утилиту nvidia-docker до версии 2
- https://github.com/NVIDIA/nvidia-docker/tree/2.0
Классические статьи про deep learning - на этот раз inceptionv4 (странно я мало про нее слышал до этого).
Суть - это самая state-of-the-art доступная для простого человека модель, которая имеет ~3% top5 ошибки на imagenet (после этого народ стал ковырять более легкие сетки):
- Статья написана четко и понятным языком (что редкость). Сама архитектура попахиваем перебором брутфорсом)
- Базовая архитектура в 1 картинку - https://goo.gl/H7sxpL
- Inception v4 - https://arxiv.org/abs/1602.07261
- Из интересного:
-- Inception<3 имеет такую безумную архитектуру, т.к. гугл тренировал ее на каком-то своем старом распределенном софте - и там были ограничения по памяти
-- Inception4 имеет более простую архитектуру по сравнению с inception3
-- Inception4 и inception-resnet примерно одинаковы по своей мощности
-- В принципе ясно как они репортят точность - https://goo.gl/JyDkGg (100+ кропов?)
-- Базовая архитектура в 1 картинку - https://goo.gl/H7sxpL
--- Входной энкодер - https://goo.gl/RWCZCM (stem)
--- Блоки A , B - https://goo.gl/QYZCAa
--- Блок C - https://goo.gl/1XCp6f
--- Reduction блоки - https://goo.gl/qcBUv5 - https://goo.gl/Gpeize
Ну и прикладной совет - видите сетку на основе inception - пробуйте прикрутить к ней v4)
Для pytorch эта модель еще есть только в виде PR
- https://github.com/pytorch/vision/pull/43/files
#deep_learning
Подборка - статьи про pytorch
Гайд раз - /channel/snakers4/1362
Fast.ai и pytorch - /channel/snakers4/1367
Цикл статей про SSD на pytorch - /channel/snakers4/1435
Pytorch и докер -/channel/snakers4/1438
Впечатления про pytorch - /channel/snakers4/1442
Расширение классов Pytorch - /channel/snakers4/1447
Аугментации на pytorch - /channel/snakers4/1449
Pytorch - снижение lr по шагам - /channel/snakers4/1457
Внутрянка tf и pytorch - /channel/snakers4/1467
#digest
#deep_learning
#pytorch
Давно не делал подборки с канала. Сделаю несколько штук)
Интересные ссылки на тему DS / ML
68 Cheat sheet-ы Data wrangling - /channel/snakers4/1219
69 Bokeh - замена D3.js но на питоне - /channel/snakers4/1220
70 Новый курс от fast.ai - прикладная линейная алгебра - /channel/snakers4/1224
71 Быстрый анализ потокового видео - /channel/snakers4/1227
72 Sklearn cheat-sheet - /channel/snakers4/1229
73 Советы от призеров на Kaggle /channel/snakers4/1231
74 Интуиция при использовании t-SNE - /channel/snakers4/1239
75 Бенчмарки либ для градиентного бустинга - /channel/snakers4/1250
76 ROC и AUC простыми словами - /channel/snakers4/1262
77 Еще прогресс бары на питоне - /channel/snakers4/1269
78 Fast.ai открыли вторую серию курса про глубокое обучение - /channel/snakers4/1270
79 Чит шиты - архитектуры нейросетей - /channel/snakers4/1273
80 РАБОТАЮЩИЙ пример multi-curl - /channel/snakers4/1274
81 Многопоточность в питоне - /channel/snakers4/1276
82 Как эффективно загружать .npy массивы в память в питоне - /channel/snakers4/1279
83 Туториалы по Keras + tf с примерами в ipynb - /channel/snakers4/1278
84 Новый курс от Andrew Ng - /channel/snakers4/1293
85 Разложения матриц fast.ai - /channel/snakers4/1294
86 Дельные статьи с Хабра - /channel/snakers4/1303
87 Музыкальные рекоммендации - /channel/snakers4/1305
88 Визуализация в виде карты - /channel/snakers4/1306
89 Классная презентация про ML в гугле - /channel/snakers4/1309
90 Многопоточная работа с файлами в питоне в Keras - /channel/snakers4/1313
91 Мобильные архитектуры нейросетей /channel/snakers4/1316
#digest
#data_science
SSD300 vs YOLO - на глаз разницы почти не видно, но SSD300 гораздо увереннее чем YOLO предсказывает класс рыбы.
Читать полностью…Статья от победителя соревнования про Амазонку
- https://goo.gl/Ku6yaE
Из того, что стоит отметить:
- Стекинг по все поля
- Python 3.6, PyTorch, PyCharm community version
- Haze removal - https://goo.gl/x6v2N7 (что интересно, для похожей ситуации - shadow removal - нормальных статей не было)
#data_science
Если на новой инсталляции у вас с таким подходом есть баги с некоторыми extensions - то решение - просто выкинуть их из докер файла, запустить контейнер, зайти в него через exec и поставить из репозитория. Вероятно новые версии конфиликтуют.
# A NOTE ON ENABLING JPN EXTENSIONS
# sometimes pip install does not work on some systems
# installation from source solves the problem
git clone https://github.com/ipython-contrib/jupyter_contrib_nbextensions.git
pip install -e jupyter_contrib_nbextensions
jupyter contrib nbextension install --system
#data_science
#linux
Классические статьи в ML. На этот раз - Xception - развитие идеи Inception нейросетей от автора Keras Francois Chollet
- Статья - https://arxiv.org/abs/1610.02357
- Основная идея - довести идею Inception до упора полностью разделив convolutions отвечающие за цвет и за пространство
- Оригинальный Inception модуль - https://goo.gl/t89QaP
- Упрощение такого модуля - https://goo.gl/dvkH2k
- Ultimate версия такого модуля https://goo.gl/qexHvo
- Архитектура всей модели - https://goo.gl/DPt6wr
- Точности такая модель особо не прибавляет, но якобы тренируется лучше чем inception https://goo.gl/nzoxY5
#data_science
#deep_learning
Если вы пытаетесь скрестить код, который должен работать на 2 GPU и код который должен работать только на 1 GPU (ужа с ежом) на Pytorch, не переписывая ни один из них, то такой сниппет поможет вам
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="1"
#pytorch
Отличное summary текущего state of the art в сфере распознавания голоса
- https://awni.github.io/images/speech-recognition/wer.svg
- https://awni.github.io/speech-recognition/
TLDR
The recent improvements in conversational speech are not deployable. When thinking about what makes a new speech algorithm deployable, it’s helpful to think in terms of latency and compute. The two are related, as algorithms which increase compute tend to increase latency. But for simplicity I’ll discuss each separately.
#data_science
10 лет назад Microsoft инвестировал $240 млн в Facebook. Сейчас стоимости компаний почти равны
https://www.recode.net/2017/10/23/16412108/facebook-microsoft-2007-investment-market-cap-chart
Подборка - Докер
Как начать в докер - /channel/snakers4/1365
Как начать в докер - уже серьезнее - /channel/snakers4/1403
Бойлерплейты на докере для DS - /channel/snakers4/1409
Pytorch и докер -/channel/snakers4/1438
Докер и проброс ssh - /channel/snakers4/1439
Как поднять себе окружение в докере с уровня железа
#digest
#linux
Подборка - статьи и заметки автора
30 Переход на HTTPS - /channel/snakers4/1109
31 The art of learning - /channel/snakers4/1099
32 Как пользоваться каналом - /channel/snakers4/1084
33 Про деплой и поддержку сервера - /channel/snakers4/1074
34 Про бекапы - /channel/snakers4/1069
35 Про бекенд нашего сайта - /channel/snakers4/1046
36 Как пользоваться каналом - /channel/snakers4/1084
37 Заметка про Гугл, Андроид, Эппл и машинное обучение - /channel/snakers4/1085
39 Книга про самообразование - /channel/snakers4/1099
40 Заметка про семантическое ядро - /channel/snakers4/1102
41 Заметка про RTB - /channel/snakers4/1110
42 Анализ рынка через сайтмапы - /channel/snakers4/1127
43 SMTP шлюзы - https://spark-in.me/post/smtp-relay-outsiders-view-1
44 Сайтмапы - часть 3 /channel/snakers4/1171
45 Сайтмапы - часть 2 /channel/snakers4/1153
46 Анализ 1.5м фоток квартир - начало - /channel/snakers4/1180
47 Визуализации нейросетей - фейл - /channel/snakers4/1196
48 Визуализация звука в питоне - /channel/snakers4/1197
50 Про глупость и способы ее исправить - /channel/snakers4/1263
51 Установка софта для работы с GPU и нейросетями - /channel/snakers4/1287
52 Работа с U-NET на практике - /channel/snakers4/1307
53 Как тренировать сверточные нейросети в 10 раз быстрее - /channel/snakers4/1319
54 Про трудовую миграцию - /channel/snakers4/1328
#digest
#data_science
Серия сопровождающих видео к Deep Learning book
- https://www.youtube.com/watch?v=oFa0Xe6fcBk
Сама книга
- http://www.deeplearningbook.org
Вот чего не хватало для ее прочтения)
#deep_learning
Если используете pytorch, то самый простой способ посмотреть картинку в формате генератора pytorch примерно такой. Поменять каналы местами, перевести в float, нормализовать. Тогда легко открыть картинку через pyplot.
img = images[15].cpu().numpy().astype(np.float32).transpose((1, 2, 0))
img += -img.min()
img *= (1/img.max())
plt.imshow(img)
plt.show()
#pytorch
Заметка про внутрянку использования разных библиотек для нейросетей, которые не сразу очевидны, если с этим не работать:
- tf имеет несколько contrib слоев в своем АПИ, которые дописываются разными командами в Гугле. По этой причине там можно найти весьма извращенные вещи, доступные из коробки. Это своеобразный внутренний опен-сорс внутри гугла между удаленными друг от друга командами
- Внезапно в tf надо очень помучиться чтобы найти работающий batch norm слой - и их там много
- при прототипировании разницы в скорости реальной вообще нет, но на продакшене tf имеет заветные +20-30% скорости работы. не порядки, конечно, но прирост есть
Pytorch
- У него нет нормальных модулей для бенчмаркинга - скорости работы, занимаемой памяти, размеру слоев итд
- В сочетании с visdom можно визуализировать что угодно, но это все равно будет отчасти на коленке
#data_science
#deep_learning
Нашел время прочитать оригинальные (теперь уже классические) статьи про Resnet и Inceptionv3
- Resnet - https://goo.gl/831gwR
- Inception v3 - https://goo.gl/b4SYjE
Полезно для понимания принципов построения state of the art нейросетей / основные идеи:
- Идеи resnet
-- Пробрасывание активаций предыдущего слоя вперед для ускорения обучения и снижения проблемы угасающих градиентов (градиентный спуск "размывается" для очень больших сетей) - https://goo.gl/4USP4j
-- Как выглядит resnet в сравнении с традиционными архитектурами - https://goo.gl/k6D6H4g
-- За счет меньшего числа фильтров в начале сети сеть получается легче, несмотря на ее больший общий размер
-- Сравнение скорости обучения Resnet и обычных сетей - https://goo.gl/2Ficd1
- Идеи Inception
-- Основная идея - замена обычного фильтра набором из меньших фильтров, которые должны давать прирост по скорости в 20-30% - пример для фильтра 5x5 - https://goo.gl/f335Kv
-- Такой же фильтр для nxn с ассиметричными convolutions - https://goo.gl/Wq9wgf
-- Иллюстрация мини-сетей, которые заменяют фильтры разного размера
--- 3x3 https://goo.gl/W7T1Fh
--- 5x5 https://goo.gl/XdLQPD
-- Базовые принципы построения нейросетей
--- Не допускать репрезантационного боттлнека в сети (когда данные очень сильно сжимаются)
--- Аггрегацию (пулинг) можно делать на данных меньшей размерности из-за высокой корреляции между пикселями в картинках без потери точности
--- Фильтры с большим числом слоев лучше обрабатывать локально в сети далее передавая уже обработанный сигнал
--- Вычислительную мощность надо распределять между глубиной и "шириной" сети
#data_science
#deep_learning
Из серии извращений - как загрузить k-means объект из второго питона в третий, причем с ростом версии sklearn?
Очевидное решение не работает по причине смены версии sklearn
- https://goo.gl/s8V5zf
А такое работает
# saving - python2
import numpy as np
np.savetxt('centroids.txt', centroids, delimiter=',')
# loading - python3
from sklearn.cluster import KMeans
import numpy as np
centroids = np.loadtxt('centroids.txt', delimiter=',')
kmeans = KMeans(init = centroids)
#python
По стечению обстоятельств, сегодня пришлось потратить утро на настройку окружения себе с уровня "bare metal". Ради самоконтроля, поддерживаемости и понятности, залогировал все в гайд.
- https://goo.gl/es3SVu
В нем вы найдете
- Как ставить линукс на железо
- Мой последний докерфайл, который поддерживает (и протестирован)
-- Keras, tf, pytroch
-- 95% ипользуемых библиотек python3 для data science, включая opencv без поддержки видео
-- Extensions для тетрадок jupyter
- Как настраивать базовую безопасность - ssh ключи
- Как монтировать диски и потом прокидывать их в докер
- И очень много ссылок для изучения, если вы реально хотите разобраться
#deep_learning
#linux
#admin
#data_science
В общем побеждает простота. Обычный k-means из sklearn имеет функцию запуска на всех процессорах. Что решает вопрос по сути одной строчкой. Nuff said.
Читать полностью…