Subway plankton
solutions
Subway Plankton team
Марат Зайнутдинов
@tsundokum
tsundokum@gmail.com
Алексей Лымарь
@yoptar
yoptar@gmail.com
http://www.kaggle.com/c/datasciencebowl
Задача
Определить принадлежность планктона к
одному из 121 класса по фотографии.
Negative log-likelihood
4.8 0.56
Нейронная сеть
x1
x2
xn
w1
w2
wn
y
1
b
Нейронная сеть
1
1
X1 W1 X2 W2 Y
Скрытый слой
1
1
X1 W1 X2 W2 Y
http://deeplearning.net/tutorial/http://deeplearning.stanford.edu/tutorial/
http://yaroslavvb.blogspot.ru/
http://stats.stackexchange.com/questions/126097/convolutional-neural-network-using-
absolut...
● convolutional (conv)
● maxpool (pool)
● fully connected (fc)
● softmax
Размерность свёрточного слоя
каналы x ширина x высота
трёхмерная свёртка!
Примеры
Входной цветной слой: 3x7x7
Входной черн...
Pooling
Уменьшение картинки
Viewpoint invariance
1x32x32
6x28x28
6x14x14
16x10x10
16x5x5
120 84 10
conv 6x5x5→pool→conv 16x5x5→pool→fc 120→fc 84→softmax 10
Технологии
Caffe
CXXNET
Torch
Theano
PyLearn2
Lasagne
Инструменты
● Python 2.7 (Anaconda)
● PyCharm 4 Community Edition
● git @ bitbucket.org
● CUDA toolkit 6.5
● PyLearn2 → Th...
Задача 1 Baseline
Получить хоть какую-то модель
● преобразовать картинки в матрицу чисел
● ошибка уменьшается по эпохам
● ...
Инфраструктура (2 недели)
● Генерация матрицы из картинок (разные алгоритмы
сведения к одному размеру)
● Перекрёстное тест...
Data Augmentation
Offset
Scale
Rotation
Flip
4.8 0.56
1.5
1.2
0.85
Лучшая сеть на PyLearn2
conv 32x5x5
conv 64x3x3
2 * conv 128x3x3
4 * conv 128x3x3
2 * fc 1000
softmax
4.8 0.560.82
1.5
1.2...
Theano
● Операции не выполняются сразу
● Строится граф вычислений
● Автовычисление производных
Y = T.softmax(T.dot(W.T, X)...
Месяц экспериментов на Theano
● CNN (conv, maxpool, dense) (1 неделя)
● batch normalization (Ioffe, Szegedy, 2015)
● weigh...
● Weight Initialization — возможность
обучать глубокую нейросеть,
существенное уменьшение ошибки с
первых эпох!
● Adadelta...
Сработали
только weight init и
момент Нестерова...
буль...
Не помогло
Whitening
Анализ ошибок (misclass table)
Batch Normalization
Adadelta, adagrad, rmsprop
soft targetings
handcra...
Расколбас!
изображения 0–255 к 1.0–0.0
tanh лучше sigmoid
weight initialization
Batch Normalization
Работает на глубоких сетях
Замедляет обучение на 30-100% (по времени
на эпоху)
Как в прошлый раз, но
● жирнее
● инициализация весов
● увеличили размер картинки (82x82)
● Gaussian Dropout
●
4.8 0.560.8
...
amazon_train2.py
Размер 100x100 (resize)
PReLU
Gaussian Dropout
Polishing
Leap of Faith
4.8 0.560.8
0.82
0.73
Подробнее про
Polishing
Leap of Faith
conv 16x3x3 pool
conv 32x3x3 pool
conv 64x3x3
conv 96x3x3 pool
conv 128x3x3
conv 192x3x3
conv 256x3x3 pool
4.8 0.560.8
0.8...
amazon_train1.py
Размер 100x100 (shrink)
PReLU
Gaussian Dropout
4.8 0.560.8
0.82 0.73
0.7
Усреднение
двух предыдущих моделей
4.8 0.560.8
0.82 0.73
0.7
0.68
amazon_train_1_2_igipop_40_averaged
+ fc layer
- меньше gaussian dropout
4.8 0.560.8
0.82 0.73
0.7
0.68
vedr.py + усреднение
conv 16 32 pool 48 64 80 pool 96 112
128 144 pool 160 176 192 pool
fc 2000 2000 2000
image size=165x1...
Amazon EC2
$0.65/час ‘On Demand’
$0.065/час ‘Spot’ = 100 в сутки
$23 за 3 дня вычислений на 5 компьютерах
За электричество...
Разное
CNN плохо абстрагируют размер
PReLU плохо считался на AWS
фильтры 3х3 хороши
Что у победителей
Fractional Max-Pooling (Graham, 2015)
Spatial Pyramid Pooling [7]
Entropy Regularization [8]
Обратные кл...
Литература
[1] http://deeplearning.net/tutorial/
[2] Zeiler, Fergus. Visualizing and Understanding Convolutional Networks ...
Meetup #1. Building a CNN in Kaggle Data Science Bowl
Meetup #1. Building a CNN in Kaggle Data Science Bowl
Meetup #1. Building a CNN in Kaggle Data Science Bowl
Meetup #1. Building a CNN in Kaggle Data Science Bowl
Meetup #1. Building a CNN in Kaggle Data Science Bowl
Upcoming SlideShare
Loading in …5
×

Meetup #1. Building a CNN in Kaggle Data Science Bowl

541 views

Published on

Marat and Alexey sharing their experience building a convolutional neural network in https://www.kaggle.com/c/datasciencebowl.

Published in: Data & Analytics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
541
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Meetup #1. Building a CNN in Kaggle Data Science Bowl

  1. 1. Subway plankton solutions
  2. 2. Subway Plankton team Марат Зайнутдинов @tsundokum tsundokum@gmail.com Алексей Лымарь @yoptar yoptar@gmail.com
  3. 3. http://www.kaggle.com/c/datasciencebowl
  4. 4. Задача Определить принадлежность планктона к одному из 121 класса по фотографии.
  5. 5. Negative log-likelihood 4.8 0.56
  6. 6. Нейронная сеть x1 x2 xn w1 w2 wn y 1 b
  7. 7. Нейронная сеть 1 1 X1 W1 X2 W2 Y
  8. 8. Скрытый слой 1 1 X1 W1 X2 W2 Y
  9. 9. http://deeplearning.net/tutorial/http://deeplearning.stanford.edu/tutorial/
  10. 10. http://yaroslavvb.blogspot.ru/ http://stats.stackexchange.com/questions/126097/convolutional-neural-network-using- absolute-of-tanh-on-convolution-output
  11. 11. ● convolutional (conv) ● maxpool (pool) ● fully connected (fc) ● softmax
  12. 12. Размерность свёрточного слоя каналы x ширина x высота трёхмерная свёртка! Примеры Входной цветной слой: 3x7x7 Входной черно-белый: 1x7x7
  13. 13. Pooling Уменьшение картинки Viewpoint invariance
  14. 14. 1x32x32 6x28x28 6x14x14 16x10x10 16x5x5 120 84 10 conv 6x5x5→pool→conv 16x5x5→pool→fc 120→fc 84→softmax 10
  15. 15. Технологии Caffe CXXNET Torch Theano PyLearn2 Lasagne
  16. 16. Инструменты ● Python 2.7 (Anaconda) ● PyCharm 4 Community Edition ● git @ bitbucket.org ● CUDA toolkit 6.5 ● PyLearn2 → Theano+cudnn ● Ubuntu ● 16gb RAM ● NVIDIA GTX770 (4gb RAM)
  17. 17. Задача 1 Baseline Получить хоть какую-то модель ● преобразовать картинки в матрицу чисел ● ошибка уменьшается по эпохам ● результат лучше, чем рандом ● генерировать правильный формат output для Kaggle и получить errorkaggle =errorvalid 4.8 0.562.0
  18. 18. Инфраструктура (2 недели) ● Генерация матрицы из картинок (разные алгоритмы сведения к одному размеру) ● Перекрёстное тестирование (6-Fold CV) ● Логирование ● Удобное описание нейросети и параметров обучения ● Сохранение и загрузка моделей ● Загрузка результатов в Kaggle ● Data Augmentation ● Усреднение результатов ● Дообучение глубокой сети
  19. 19. Data Augmentation Offset Scale Rotation Flip 4.8 0.56 1.5 1.2 0.85
  20. 20. Лучшая сеть на PyLearn2 conv 32x5x5 conv 64x3x3 2 * conv 128x3x3 4 * conv 128x3x3 2 * fc 1000 softmax 4.8 0.560.82 1.5 1.2 0.85
  21. 21. Theano ● Операции не выполняются сразу ● Строится граф вычислений ● Автовычисление производных Y = T.softmax(T.dot(W.T, X) + b) error = nll(Y_true, Y) W = W - lr * T.grad(error, W) b = b - lr * T.grad(error, b)
  22. 22. Месяц экспериментов на Theano ● CNN (conv, maxpool, dense) (1 неделя) ● batch normalization (Ioffe, Szegedy, 2015) ● weight initialization (He etc, 2015) ● Nesterov momentum ● adaptive optimization (adadelta, adagrad, rmsprop) ● padding conv layer (2 недели)
  23. 23. ● Weight Initialization — возможность обучать глубокую нейросеть, существенное уменьшение ошибки с первых эпох! ● Adadelta — не нужно подбирать lr вручную, нужно меньше эпох! ● Batch Normalization — нужно в 3 раза меньше эпох, конечный результат значительно лучше!
  24. 24. Сработали только weight init и момент Нестерова... буль...
  25. 25. Не помогло Whitening Анализ ошибок (misclass table) Batch Normalization Adadelta, adagrad, rmsprop soft targetings handcrafted features (parallel)
  26. 26. Расколбас! изображения 0–255 к 1.0–0.0 tanh лучше sigmoid weight initialization
  27. 27. Batch Normalization Работает на глубоких сетях Замедляет обучение на 30-100% (по времени на эпоху)
  28. 28. Как в прошлый раз, но ● жирнее ● инициализация весов ● увеличили размер картинки (82x82) ● Gaussian Dropout ● 4.8 0.560.8 0.82
  29. 29. amazon_train2.py Размер 100x100 (resize) PReLU Gaussian Dropout Polishing Leap of Faith 4.8 0.560.8 0.82 0.73
  30. 30. Подробнее про Polishing Leap of Faith
  31. 31. conv 16x3x3 pool conv 32x3x3 pool conv 64x3x3 conv 96x3x3 pool conv 128x3x3 conv 192x3x3 conv 256x3x3 pool 4.8 0.560.8 0.82 0.73
  32. 32. amazon_train1.py Размер 100x100 (shrink) PReLU Gaussian Dropout 4.8 0.560.8 0.82 0.73 0.7
  33. 33. Усреднение двух предыдущих моделей 4.8 0.560.8 0.82 0.73 0.7 0.68
  34. 34. amazon_train_1_2_igipop_40_averaged + fc layer - меньше gaussian dropout 4.8 0.560.8 0.82 0.73 0.7 0.68
  35. 35. vedr.py + усреднение conv 16 32 pool 48 64 80 pool 96 112 128 144 pool 160 176 192 pool fc 2000 2000 2000 image size=165x165 4.8 0.560.8 0.82 0.73 0.7 0.68 0.66
  36. 36. Amazon EC2 $0.65/час ‘On Demand’ $0.065/час ‘Spot’ = 100 в сутки $23 за 3 дня вычислений на 5 компьютерах За электричество заплатили 1500 за 2 месяца Instance→Setup→Snapshot→ *Instance→Compute Не забывайте terminate!
  37. 37. Разное CNN плохо абстрагируют размер PReLU плохо считался на AWS фильтры 3х3 хороши
  38. 38. Что у победителей Fractional Max-Pooling (Graham, 2015) Spatial Pyramid Pooling [7] Entropy Regularization [8] Обратные кластеры слоёв
  39. 39. Литература [1] http://deeplearning.net/tutorial/ [2] Zeiler, Fergus. Visualizing and Understanding Convolutional Networks (2013) [3] He, Zhang, Ren, Sun. Delving Deep into Rectifiers: Surpassing Human-Level Perfomance on ImageNet Classification (2015) [4] Ioffe, Szegedy. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift (2015) [5] Graham. Fractional Max-Pooling (2015) [6] Simonyan, Zisserman. Very Deep Convolutional Networks for Large-Scale Image Recognition (2015) [7] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition (2014) [8] Dong-Hyun Lee. Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks (2013)

×