SlideShare a Scribd company logo
1 of 44
Download to read offline
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-
absolute-of-tanh-on-convolution-output
● convolutional (conv)
● maxpool (pool)
● fully connected (fc)
● softmax
Размерность свёрточного слоя
каналы x ширина x высота
трёхмерная свёртка!
Примеры
Входной цветной слой: 3x7x7
Входной черно-белый: 1x7x7
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 → Theano+cudnn
● Ubuntu
● 16gb RAM
● NVIDIA GTX770 (4gb RAM)
Задача 1 Baseline
Получить хоть какую-то модель
● преобразовать картинки в матрицу чисел
● ошибка уменьшается по эпохам
● результат лучше, чем рандом
● генерировать правильный формат output
для Kaggle и получить errorkaggle
=errorvalid
4.8 0.562.0
Инфраструктура (2 недели)
● Генерация матрицы из картинок (разные алгоритмы
сведения к одному размеру)
● Перекрёстное тестирование (6-Fold CV)
● Логирование
● Удобное описание нейросети и параметров обучения
● Сохранение и загрузка моделей
● Загрузка результатов в Kaggle
● Data Augmentation
● Усреднение результатов
● Дообучение глубокой сети
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
0.85
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)
Месяц экспериментов на 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 недели)
● Weight Initialization — возможность
обучать глубокую нейросеть,
существенное уменьшение ошибки с
первых эпох!
● Adadelta — не нужно подбирать lr
вручную, нужно меньше эпох!
● Batch Normalization — нужно в 3 раза
меньше эпох, конечный результат
значительно лучше!
Сработали
только weight init и
момент Нестерова...
буль...
Не помогло
Whitening
Анализ ошибок (misclass table)
Batch Normalization
Adadelta, adagrad, rmsprop
soft targetings
handcrafted features (parallel)
Расколбас!
изображения 0–255 к 1.0–0.0
tanh лучше sigmoid
weight initialization
Batch Normalization
Работает на глубоких сетях
Замедляет обучение на 30-100% (по времени
на эпоху)
Как в прошлый раз, но
● жирнее
● инициализация весов
● увеличили размер картинки (82x82)
● Gaussian Dropout
●
4.8 0.560.8
0.82
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.82
0.73
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=165x165
4.8 0.560.8
0.82 0.73
0.7 0.68
0.66
Amazon EC2
$0.65/час ‘On Demand’
$0.065/час ‘Spot’ = 100 в сутки
$23 за 3 дня вычислений на 5 компьютерах
За электричество заплатили 1500 за 2 месяца
Instance→Setup→Snapshot→ *Instance→Compute
Не забывайте terminate!
Разное
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 (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)

More Related Content

Viewers also liked

トピックモデルでテキストをクラスタリングしてみた
トピックモデルでテキストをクラスタリングしてみたトピックモデルでテキストをクラスタリングしてみた
トピックモデルでテキストをクラスタリングしてみたHirofumi Tsuruta
 
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)Shotaro Sano
 
Modernismo t5
Modernismo t5Modernismo t5
Modernismo t5mmar84
 
葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by Keras葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by KerasYuji Kawakami
 
Pensamientos Modernistas y Posmodernistas
Pensamientos Modernistas y PosmodernistasPensamientos Modernistas y Posmodernistas
Pensamientos Modernistas y Posmodernistascimltrajd
 
Introduction to Chainer: A Flexible Framework for Deep Learning
Introduction to Chainer: A Flexible Framework for Deep LearningIntroduction to Chainer: A Flexible Framework for Deep Learning
Introduction to Chainer: A Flexible Framework for Deep LearningSeiya Tokui
 
Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Yuya Unno
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介Recruit Technologies
 
Chainer v2 alpha
Chainer v2 alphaChainer v2 alpha
Chainer v2 alphaSeiya Tokui
 
Modernismo Y Posmodernismo
Modernismo Y PosmodernismoModernismo Y Posmodernismo
Modernismo Y Posmodernismoomar sigcha
 
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)徹 上野山
 
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。tak9029
 
深層学習とTensorFlow入門
深層学習とTensorFlow入門深層学習とTensorFlow入門
深層学習とTensorFlow入門tak9029
 

Viewers also liked (18)

Modernismo
ModernismoModernismo
Modernismo
 
トピックモデルでテキストをクラスタリングしてみた
トピックモデルでテキストをクラスタリングしてみたトピックモデルでテキストをクラスタリングしてみた
トピックモデルでテキストをクラスタリングしてみた
 
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
 
Modernismo t5
Modernismo t5Modernismo t5
Modernismo t5
 
葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by Keras葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by Keras
 
Pensamientos Modernistas y Posmodernistas
Pensamientos Modernistas y PosmodernistasPensamientos Modernistas y Posmodernistas
Pensamientos Modernistas y Posmodernistas
 
Modernismo y 98
Modernismo y 98Modernismo y 98
Modernismo y 98
 
Modernismo
ModernismoModernismo
Modernismo
 
Introduction to Chainer: A Flexible Framework for Deep Learning
Introduction to Chainer: A Flexible Framework for Deep LearningIntroduction to Chainer: A Flexible Framework for Deep Learning
Introduction to Chainer: A Flexible Framework for Deep Learning
 
Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
 
Modernismo
ModernismoModernismo
Modernismo
 
Chainer v2 alpha
Chainer v2 alphaChainer v2 alpha
Chainer v2 alpha
 
Modernismo Y Posmodernismo
Modernismo Y PosmodernismoModernismo Y Posmodernismo
Modernismo Y Posmodernismo
 
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
 
Modernismo
ModernismoModernismo
Modernismo
 
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。
 
深層学習とTensorFlow入門
深層学習とTensorFlow入門深層学習とTensorFlow入門
深層学習とTensorFlow入門
 

More from SPb_Data_Science

Diabetic Retinopathy Detection
Diabetic Retinopathy DetectionDiabetic Retinopathy Detection
Diabetic Retinopathy DetectionSPb_Data_Science
 
Эффективные Алгоритмы Поиска Подобных Объектов Для Терабайтов Данных
Эффективные Алгоритмы Поиска Подобных Объектов Для Терабайтов ДанныхЭффективные Алгоритмы Поиска Подобных Объектов Для Терабайтов Данных
Эффективные Алгоритмы Поиска Подобных Объектов Для Терабайтов ДанныхSPb_Data_Science
 
Meetup#4, Apache Spark as SQL Engine
Meetup#4, Apache Spark as SQL Engine Meetup#4, Apache Spark as SQL Engine
Meetup#4, Apache Spark as SQL Engine SPb_Data_Science
 
Trending Topics in Recommender Systems
Trending Topics in Recommender SystemsTrending Topics in Recommender Systems
Trending Topics in Recommender SystemsSPb_Data_Science
 
Meetup#4, Smart.Data@OK.ru
Meetup#4, Smart.Data@OK.ruMeetup#4, Smart.Data@OK.ru
Meetup#4, Smart.Data@OK.ruSPb_Data_Science
 
Intro to Deep Reinforcement Learning
Intro to Deep Reinforcement LearningIntro to Deep Reinforcement Learning
Intro to Deep Reinforcement LearningSPb_Data_Science
 
Benford’s law & fraud detection slides
Benford’s  law & fraud detection slidesBenford’s  law & fraud detection slides
Benford’s law & fraud detection slidesSPb_Data_Science
 
Meetup#2. Intro to Factorization Machines
Meetup#2. Intro to Factorization MachinesMeetup#2. Intro to Factorization Machines
Meetup#2. Intro to Factorization MachinesSPb_Data_Science
 
Meetup#2. Introduction to Algorithmic Trading
Meetup#2. Introduction to Algorithmic TradingMeetup#2. Introduction to Algorithmic Trading
Meetup#2. Introduction to Algorithmic TradingSPb_Data_Science
 
Meetup #1. Trends, talks, cool stuff.
Meetup #1. Trends, talks, cool stuff.Meetup #1. Trends, talks, cool stuff.
Meetup #1. Trends, talks, cool stuff.SPb_Data_Science
 

More from SPb_Data_Science (11)

Diabetic Retinopathy Detection
Diabetic Retinopathy DetectionDiabetic Retinopathy Detection
Diabetic Retinopathy Detection
 
Эффективные Алгоритмы Поиска Подобных Объектов Для Терабайтов Данных
Эффективные Алгоритмы Поиска Подобных Объектов Для Терабайтов ДанныхЭффективные Алгоритмы Поиска Подобных Объектов Для Терабайтов Данных
Эффективные Алгоритмы Поиска Подобных Объектов Для Терабайтов Данных
 
Meetup#4, Apache Spark as SQL Engine
Meetup#4, Apache Spark as SQL Engine Meetup#4, Apache Spark as SQL Engine
Meetup#4, Apache Spark as SQL Engine
 
Trending Topics in Recommender Systems
Trending Topics in Recommender SystemsTrending Topics in Recommender Systems
Trending Topics in Recommender Systems
 
Meetup#4, Smart.Data@OK.ru
Meetup#4, Smart.Data@OK.ruMeetup#4, Smart.Data@OK.ru
Meetup#4, Smart.Data@OK.ru
 
Intro to Deep Reinforcement Learning
Intro to Deep Reinforcement LearningIntro to Deep Reinforcement Learning
Intro to Deep Reinforcement Learning
 
Benford’s law & fraud detection slides
Benford’s  law & fraud detection slidesBenford’s  law & fraud detection slides
Benford’s law & fraud detection slides
 
Classification metrics
Classification metrics Classification metrics
Classification metrics
 
Meetup#2. Intro to Factorization Machines
Meetup#2. Intro to Factorization MachinesMeetup#2. Intro to Factorization Machines
Meetup#2. Intro to Factorization Machines
 
Meetup#2. Introduction to Algorithmic Trading
Meetup#2. Introduction to Algorithmic TradingMeetup#2. Introduction to Algorithmic Trading
Meetup#2. Introduction to Algorithmic Trading
 
Meetup #1. Trends, talks, cool stuff.
Meetup #1. Trends, talks, cool stuff.Meetup #1. Trends, talks, cool stuff.
Meetup #1. Trends, talks, cool stuff.
 

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