|
Цитата:
|
|
1. как построить архитектуру сети. Есть английский алфавит + цифры, есть обучающая выборка MNIST, определенного формата. Один нейрон или дин слой должен отвечать за распознавание буквы?
|
В задаче многоклассовой классификации (у тебя M=36 классов, буквы и цифры), в нейросетях обычно строится сеть, в который M выходных нейронов, по одному на класс. А все остальные слои у них общие. Выход i-го нейрона интерпретируется как уверенность в этом классе.
В каком классе сеть наиболее уверенна, тот и принимаешь за ее ответ. А во время обучения наоборот - тебе надо преобразовать известную метку класса в желаемое значение "уверенности" для каждого выходного нейрона; можно так: подаешь на выход правильного нейрона, скажем, +1, а на выход всех остальных - ноль, или -1. Впрочем, если пользуешь готовый софт, то это он должен уметь делать сам.
|
Цитата:
|
|
2. При обучении ведь изменяется всего один параметр - вес
|
не один. их много
|
Цитата:
|
|
,а если делать выборки подряд? не "забудет" ли сеть предыдущие прогоны?
|
Не совсем понял, что значит "делать выборки подряд"?
Процесс обучения такой. Вы предъявляете сети пример: вход - правильный выход, считаете градиент методом обратного распространения ошибки, и делаете шаг градиентного спуска. Затем то же самое для другого примера, и т.д. в цикле, пока куда-нибудь оно всё не сойдётся, или не надоест.
Действительно, вскоре после выучивания некоторого примера, сеть вполне может его "забыть" (т.е. снова делать на нем ошибку). Это нормально. Нас же волнует не ошибка на каком-то отдельном примере, а сколько в среднем делается ошибок. Ноль ошибок на обучении вполне может быть и не достигнуто, причем это даже типичная ситуация. И чем больше шума, тем больше следует ожидать ошибок.
|
Цитата:
|
То есть раз вес постоянно изменяется затачиваясь под определенную выборку, каким образом она будет возвращать нужный выходной сигнал для всех выборок?
3. Если мы передаем сети букву, но такое написание сеть еще не знает, то есть она не была обучена на эту выборку, какой тогда у нее алгоритм определения буквы или цифры?
|
Правильный вопрос! "А почему оно учится?". Фундаментальный вопрос всей нашей дисциплины о машинном обучении.
Действительно, сеть вполне может просто слишком сильно затачиваться под обучающую выборку, запоминая все ее особенности. И обычно, чем больше нейронов, чем больше слоев, чем больше итераций обучения прошло, тем сильнее она это делает. Явление называется
http://en.wikipedia.org/wiki/Overfitting. На второй картинке по ссылке изображена типичная ситуация - с ростом сложности модели вначале процент ошибок уменьшается и на обучающей выборки, и "вообще". Затем ошибка "вообще" проходит минимум, и начинает снова возрастать, т.к. сеть слишком сильно подсела на обучающую выборку. Основная задача - подловить этот минимум, например, кроссвалидацией, см. ниже.
|
Цитата:
|
|
4. Какие следуют использовать функции активации в сети? Сигмидальную, чтобы можно было расчитать вероятности, ведь она возвращает вещественнео число в диапозоне -1 - 1?
|
А зачем вам на выходе обязательно вероятности? От обычных действительных чисел от -oo до oo максимум тоже прекрасно берется, а больше и не нужно.
Какую функцию брать. Вот тут хорошая статья и дается несколько практических советов -
http://www.codeproject.com/KB/librar...cognition.aspx
Но вообще, какую функцию брать, какую архитектуру брать, сколько слоев и нейронов и т.п. - это всё из одной и той же оперы. Model selection называется. Ответ дает кроссвалидация.
Перебираете варианты функций, архитектур, слоев, нейронов и т.п. (гиперпараметры одним словом). Для каждого варианта считаете кроссвалидационную ошибку (CV error) так. Делите исходную обучающую выборку на K частей (K=5 или 10 обычно), K раз проводите обучение с выбранными параметрам, на i-м разе в качестве обучающей выборке берете все K-1 частей, кроме i-й, обучаетесь, считаете ошибку на i-й части. В конце усредняете ошибки, и вуаля - получаете CV error, которая примерно говорит сколько ошибок эта модель сделает на не новых, не увиденных ей при обучении, данных. Подбираете гиперпараметры так, чтобы минимизировать CV error.