Во-первых, вы хотите, что-бы тут вам прочитали мини-курс по нейронным сетям?
Во-вторых - если уж лень самому разбираться (хотя как может быть лень, если есть интерес? скорее всего тогда это не интерес а просто любопытство, ну да ладно ) разбейте свой вопрос на отдельные подвопросы и задавайте их по одному. И будет вам бесплатная консультация по мини курсу.
По ходу отвечу на первый вопрос:
1) Для простой нейросети используют функцию сигмоид. Я как понял,она выдает значения в пределах (-1:1)
Во-первых, функций активаций может быть великое множество: ступенчатая, сигмоидная, экспоненциальная, линейный выпрямитель, арктангенс и пр, пр.пр.
Выбор конкретной функции диктуется конкретной задачей и опытом аналитика. Равно как и пределы сигмоидной ф-ции, которые могут быть как [-1,1], так и [0,1] (кстати, вообще-то говоря именно последняя - это классика). К двоичному коду это ни имеет никакого отношения - к дихатомии функция с пределами [-1,1] приводится так-же просто, как и [0,1]. Про "забивать память" - это тоже не из этой оперы. На скорость обучения действительно влияет но не столько вами обозначенные пределы, как то, они ограниченные (в том числе и ваши) с одной стороны или неограниченные - с другой. Кстати, если область значений бесконечна, обучение, как правило, более эффективно, и требуется меньший темп обучения. А если ограничена, то методы обучения на основе градиента оказываются более стабильны. Все эти факторы (наряду с огромным множеством других) и надо учитывать при построении сети.