в чем заключается обучение нейронной сети

Понятие обучения простой нейронной сети

В данной статье мы рассмотрим некоторые важные аспекты обучения нейронных сетей, а затем обсудим концепцию переобучения.

Новички в нейронных сетях? Начните с этой статьи или для получения дополнительной информации просмотрите остальные статьи из этой серии в меню с содержанием серии в начале статьи.

А если вы всерьез заинтересовались темой машинного обучения, также рекомендую обратить внимание на факультет искусственного интеллекта образовательного портала GeekBrains.

Обучающие данные перцептрона

Целью обучения является предоставление данных, которые позволяют нейронной сети сходиться на надежных математических связях между входом и выходом. В предыдущей статье математическая связь была простой: если компонент x точки в трехмерном пространстве меньше нуля, выходной результат равен нулю (например, это означает, что эта точка данных «недействительна» и не требует дальнейшего анализа); если компонент x равен или больше нуля, выходной сигнал равен единице (что указывает на «действительную» точку данных).

В таких случаях, когда известны математические связи, вы можете создавать обучающие данные в программе для работы с электронными таблицами. Я использовал Excel:

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети Рисунок 1 – Обучающие данные в Excel

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети Рисунок 2 – Обучающие данные в Excel в диапазоне [–1, +1]

Просто чтобы было понятно: генерирование обучающих данных в электронной таблице – это отличный способ экспериментировать с нейронными сетями, а экспериментирование – очень важная часть знакомства и, в конечном итоге, умения разработки и реализации нейронных сетей. Однако в реальных приложениях вы обычно не можете создавать обучающие данные таким образом потому, что весь смысл использования нейронной сети состоит в том, чтобы создать алгоритм, который вы еще не знаете и не можете легко определить или выяснить.

В следующих подразделах обсуждаются некоторые вещи, которые следует иметь в виду при создании обучающего набора.

Обеспечение обилия обучающих данных

Нейронная сеть не учится через понимание и критическое мышление. Это чисто математическая система, и она очень постепенно приближается к сложным связям вход-выход. Таким образом, большие объемы данных помогают нейросети продолжать уточнять свои веса и тем самым достигать большей конечной эффективности.

Диверсификация данных

Важно включить в обучающие данные разнообразие. Мы хотим, чтобы перцептрон аппроксимировал истинную, обобщенную взаимосвязь между входом и выходом, а не ложную или слишком упрощенную взаимосвязь, которая существует между входными и выходными значениями недостаточно разнообразного обучающего набора.

Представьте, что вы никогда раньше не видели дерево и не представляете, как оно выглядит. Ваш друг пытается помочь вам, показывая вам тысячи фотографий деревьев. К сожалению, он живет в сосновом лесу и фотографирует только сосны. Изучив фотографии, вы можете легко посмотреть на сосну, а также, вероятно, на пихту или ель и сказать: «Это дерево». Однако, что бы вы сказали, если бы увидели дуб или клен, или вишню, или пальму? Вероятно, это не лучшая аналогия, которую я когда-либо придумал, но я думаю, что она дает общее представление о том, что происходит с нейронной сетью, когда вы обучаете ее данными, которые не отражают разнообразие реальной задачи обработки.

Соответствие обучающих данных рабочим данным

Обучающие данные должны представлять данные, которые нейросеть будет пытаться классифицировать. В конце концов, цель обучения состоит в том, чтобы дать возможность сети эффективно обрабатывать некоторую информацию из реальной жизни. Например, что касается простой системы классификации, которую мы изучали, я мог бы знать, что мои реальные входные данные будут оставаться в пределах интервала (–5, +5), возможно, потому что три компонента входного вектора – это на самом деле аналоговые напряжения, передаваемые операционным усилителем с питанием ±5 В. Если бы это было так, я бы подготовил обучающий набор, который включает в себя множество целых и нецелых значений в диапазоне от –5 до +5.

Перетасовка

В предыдущей статье мы видели, что обучающий набор может обрабатываться несколько раз, при этом каждый полный проход через набор называется одной эпохой. Однако рекомендуется после каждой эпохи перетасовывать выборки в обучающем наборе, чтобы порядок представления выборок не оказывал на нейросеть негативного влияния. Возможно, я бы реализовал эту функцию в программном обеспечении нейронных сетей, но вы также можете продублировать обучающий набор в электронной таблице и затем случайным образом изменить порядок выборок в дублированных наборах.

Переобучение

Нейронные сети могут реагировать на чрезвычайно сложные связи между входом и выходом, и, следовательно, сеть может задействовать детали связи между входом и выходом, которые являются специфическими для обучающего набора и не имеют отношения к реальной задаче классификации. Это называется переобучением (или перетренировкой).

Следующая диаграмма эффективно иллюстрирует концепцию переобучения.

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети Рисунок 3 – Переобучение нейросети

Красные и синие точки представляют обучающие выборки, которые классифицирует нейронная сеть. Черная линия представляет собой хорошую стратегию классификации: она следует общему шаблону, который отделяет красный от синего, и, следовательно, она, вероятно, приведет к самой низкой ошибке в реальных данных. Зеленая линия – это переобученная стратегия классификации. Она слишком хорошо следует обучающим данным; в своей попытке идеально классифицировать обучающие выборки, она создала связь вход-выход, которая является менее обобщенной и, следовательно, менее подходящей для реальных данных.

Другой способ визуализации перетренировки представлен на следующих графиках.

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети Рисунок 4 – Недостаточно обученная нейросеть в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети Рисунок 5 – Хорошо обученная нейросеть в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети Рисунок 6 – Переобученная нейросеть

В этом случае мы думаем о нейронной сети как о системе, которая генерирует математическую функцию, которая служит аппроксимацией связи между входом и выходом, выявленной обучающими выборками. Понятно, что недообучение недопустимо, так как функция не позволяет точно аппроксимировать тренд в обучающих данных, но и переобучение также проблематично, потому что тренд искажается из-за чрезмерного внимания к деталям в обучающем наборе.

Заключение

Я надеюсь, теперь у вас есть более четкое представление о том, как выполнить обучение нейронной сети. В следующей статье мы продолжим наше обсуждение обучения, но рассмотрим этот вопрос с более теоретической точки зрения.

Источник

Machine Learning – не только нейронки

Нейронные сети и глубокое обучение (deep learning) у всех на слуху, но нейросети – это лишь подобласть такого обширного предмета, как машинное обучение (machine learning). Существует несколько сотен других алгоритмов, которые способны быстро и эффективно решать задачи искусственного интеллекта и в большинстве случаев являются более интерпретируемыми для человека. В этой статье рассмотрим алгоритмы классического машинного обучения, принцип работы нейросетей, подготовку данных для обучения моделей и задачи, которые решают с помощью искусственного интеллекта.

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети

Основные задачи машинного обучения

Восстановление регрессии (прогнозирования) – построение модели, способной предсказывать численную величину на основе набора признаков объекта.

Классификация – определение категории объекта на основе его признаков.

Кластеризация – распределение объектов.

Допустим, есть набор данных со статистикой по приложениям. В нем есть следующие сведения: размер, категория, количество скачиваний, количество отзывов, рейтинг, возрастной рейтинг, жанр и цена. С помощью этого набора данных и машинного обучения можно решить такие задачи:

Прогнозирование рейтинга приложения на основе признаков: размер, категория, возрастной рейтинг, жанр и цена – задача регрессии.

Определение категории приложения на основе набора признаков: размер, возрастной рейтинг, жанр и цена – задача классификации.

Разбиение приложений на группы на основании множества признаков (например, количество отзывов, скачиваний, рейтинга) таким образом, чтобы приложения внутри группы были более похожи друг на друга, чем приложения разных групп.

Нейронные сети (многослойный перцептрон)

Существует мнение, что лучшие идеи для изобретений человек заимствует у природы. Нейронные сети – это именно тот случай, ведь сама концепция нейросетей базируется на функциональных особенностях головного мозга.

Принцип работы

Есть определенное количество нейронов, которые между собой связаны и взаимодействуют друг с другом путем передачи сигналов. Также есть рецепторы, которые получают информацию, поступающую извне, и исполнительный орган, на который приходит итоговый сигнал. По схожему принципу работают искусственные нейросети: есть несколько слоев с нейронами и связи между ними (каждая связь имеет свой весовой коэффициент). По связям передаются сигналы в виде численных значений, первый слой выполняет собой роль рецепторов, то есть получает набор признаков для обучения, и есть выходной слой, который выдает ответ.

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сетиНейронные связи в головном мозге («Создаем нейронную сеть», Тарик Рашид) в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сетиПример искусственной трехслойной нейросети («Создаем нейронную сеть», Тарик Рашид)

Каждый слой нейросети оперирует разными представлениями о данных. На рисунке ниже можно увидеть пример использованиям глубокого обучения (нейросети) для распознавания образа на картинке. На входной слой нам поступают пиксели изображений, далее после вычислений между входным и первым скрытым слоем мы получаем границы, на втором скрытом слое – контуры, на третьем – части объектов, на выходном – вероятности принадлежности изображения к каждому типу объектов.

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сетиПример использования нейросети для распознавания образа ( «Глубокое обучение», Ян Гудфеллоу)

Как настраивать

Настраивается путем задания количества узлов, скрытых слоев и выбора функции активации. В искусственных нейронных сетях функция активации нейрона отвечает за выходной сигнал, который определяется входным сигналом или набором входных сигналов.

Задачи: классификация, регрессия, кластеризация.

Классические алгоритмы машинного обучения

K-ближайших соседей

Метод K-ближайших соседей – простой и эффективный алгоритм, его можно описать известной поговоркой: “Скажи мне, кто твой друг, и я скажу, кто ты”.

Принцип работы

Пусть имеется набор данных с заданными классами. Мы можем определить класс неизвестного объекта, если рассмотрим определенное количество ближайших объектов (k) и присвоим тот класс, который имеет большинство “соседей”. Посмотрим на рисунок ниже.

Есть набор точек с двумя классами: синие крестики и красные кружки. Мы хотим определить, к какому классу относится неизвестная зеленая точка. Для этого мы берем k ближайших соседей, в данном случае 3, и смотрим, к каким классам они относятся. Из трех ближайших соседей больше оказалось синих крестиков, соответственно, мы можем предположить, что зеленая точка также, скорее всего, относится к этому классу.

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети

Как настраивать

Необходимо подобрать параметр k (количество ближайших соседей) и метрику для измерения расстояний между объектами.

Задачи: классификация, также может применяться и для задач регрессии.

Линейная регрессия

Линейная регрессия – простая и эффективная модель машинного обучения, способная решать задачи быстро и недорого.

Принцип работы

Модель линейной регрессии можно описать уравнением

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети

Здесь x – это значения признаков, y – целевая переменная, a – весовые коэффициенты признаков. При обучении модели весовые коэффициенты подбираются таким образом, чтобы как можно лучше описывалась линейная зависимость признаков от целевой переменной.

Пример: задача предсказания стоимости квартиры в зависимости от площади и удаленности от метро в минутах. Целевой переменной (y) будет являться стоимость, а признаками (x) – площадь и удаленность.

На рисунке ниже также представлен пример построения линейной регрессии. Красная прямая более точно описывает линейную зависимость x от y.

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети

Как настраивать

Для многих моделей Machine Learning, в частности и для линейной регрессии, можно улучшить итоговое качество с помощью регуляризации.

Регуляризация в статистике, машинном обучении, теории обратных задач — метод добавления некоторых дополнительных ограничений к условию с целью решить некорректно поставленную задачу или предотвратить переобучение, то есть ситуацию, когда модель хорошо показывает себя на тренировочный данных, но перестаёт работать на новых.

Распространенные методы регуляризации для повышения качества модели линейной регрессии:

Ridge — один из методов понижения размерности. Применяется для борьбы с переизбыточностью данных, когда независимые переменные коррелируют друг с другом (мультиколлинеарность), вследствие чего проявляется неустойчивость оценок коэффициентов линейной регрессии.

LASSO — также как и Ridge, применяется для борьбы с переизбыточностью данных.

Elastic-Net — модель регрессии с двумя регуляризаторами L1, L2. Частными случаями являются модели LASSO L1 = 0 и Ridge регрессии L2 = 0.

Задачи: регрессия.

Логистическая регрессия

Логистическая регрессия – также простая и эффективная модель машинного обучения, способная решать задачи быстро и недорого.

Принцип работы

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети

Указанная выше сумма проходит через функцию сигмоиды, которая возвращает число от 0 до 1, характеризующее вероятность отнесения объекта к классу 1. Пример: логистическую регрессию часто применяют в задачах кредитного скоринга, когда по определенным данным о клиенте нужно определить, стоит ли выдавать ему кредит.

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети

Иллюстрация алгоритмов линейной и логистической регрессии (источник)

Как настраивать

Задачи: классификация.

Метод опорных векторов (SVM)

Принцип работы

Чтобы лучше всего понять алгоритм метода опорных векторов, рассмотрим рисунок. На рисунке приведен пример двух линейно разделимых классов в двумерном пространстве. Идея алгоритма заключается в нахождении оптимальной разделяющей прямой (или гиперплоскости для более высоких пространств) для отделения объектов одного класса от другого. Пунктирные линии выделяют разделяющую полосу и проводятся через объекты, которые называют опорными. Чем шире разделяющая полоса, тем качественнее модель SVM. Чтобы определить класс объекта, достаточно определить, с какой стороны гиперплоскости он находится.

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети

Как настраивать

Необходимо подобрать оптимальное ядро (функцию переводящую признаковое пространство в более высокую размерность), если линейная зависимость слабо выражена.

Задачи: классификация и регрессия.

Сравнение классических алгоритмов с нейросетью

Для примера мы взяли датасет со статистикой приложений в Play Market. Датасет содержит следующие данные: размер приложения, возрастной рейтинг, количество скачиваний, жанр, категория и др. На данном датасете были обучены модели: линейная регрессия, метод опорных векторов, нейронная сеть (многослойный перцептрон).

В ходе экспериментов были подобраны следующие параметры для моделей машинного обучения:

Линейная регрессия – модели линейной регрессии с регуляризацией не показали результат, превосходящий качество классической линейной регрессии.

Метод опорных векторов – модель метода опорных векторов с RBF-ядром показала лучший результат по сравнению с другими ядрами.

Многослойный перцептрон – оптимальный результат показала модель с 4 слоями, 300 нейронами и функций активацией ReLu. При попытках увеличить количество слоев и нейронов прирост качества не наблюдался.

Решена задача прогнозирования потенциального рейтинга приложения в зависимости от его признаков.

Результаты ошибки среднего отклонения от истинного значения целевой переменной в процентах для каждой модели:

Линейная регрессия6.13 %

Метод опорных векторов6.01%

Нейронная сеть6.41%

Таким образом, классические алгоритмы машинного обучения и нейросети показали приблизительно одинаковое качество. Это связано с тем, что нейросети хорошо обучаются на датасетах с большим размером и обычно применяются для решения задач, где зависимость в данных очень сложна. Поэтому для решения данной задачи можно обойтись применением классических алгоритмов и не прибегать к использованию нейросетей.

На гистограмме ниже представлены итоговые весовые коэффициенты a, полученные при обучении модели линейной регрессии. Чем больше столбик, тем выше влияние признака на целевую переменную. Если столбик направлен вверх, то он оказывает положительное влияние на рост целевой переменной, если вниз – то отрицательное. Другими словами, если приложение имеет жанр “Other” или “Tools”, то, скорее всего, его рейтинг будет высоким, а если у него категория “FAMILY” или “GAME” – то, вероятно, низким. Данная интерпретация весовых коэффициентов линейной регрессии бывает очень полезной при анализе данных.

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сетиГистограмма значений коэффициентов линейной регрессии

Больше наших статей по машинному обучению и обработке изображений:

Источник

Обучи себя сам. Что такое нейронные сети и как они, развлекая, меняют нашу жизнь?

06:07, 10 октября 2019

К середине 2019 года нейросети обрели невероятную мощь. До восстания машин еще далеко, но прогресс налицо: они умеют не только развлекать, но и лечить, учить и работать. Попробуем на простых примерах, рассказать, что это такое, и как нейросети, обучаясь сами, обучают и нас

в чем заключается обучение нейронной сети. Смотреть фото в чем заключается обучение нейронной сети. Смотреть картинку в чем заключается обучение нейронной сети. Картинка про в чем заключается обучение нейронной сети. Фото в чем заключается обучение нейронной сети

Ну а последние несколько месяцев и вовсе принесли нейронным сетям и их создателям небывалую славу: выстрелило приложение FaceApp, показывающее, как вы будете выглядеть через энное количество лет. Наверное, пока мы пишем эту статью, кто-то изобрел нейросеть, которая напишет эту статью за меня… Но на самом деле, развлечения – это не предел использования нейронных сетей. Куда важнее то, чему они могут научиться и чему научить нас.

В нескольких абзацах расскажем, что это такое, как работает и чего ждать. Сразу скажем – на научную точность не претендуем, потому что тему в трех словах не опишешь, зато оставим в конце несколько ссылок на интересные примеры использования нейронных сетей, которые могут пригодиться и вам.

Что такое нейронные сети? У людей ведь они тоже есть?

Нейронные сети – это одно из направлений в разработке систем искусственного интеллекта. Не единственное, но очень популярное из-за своих возможностей в сфере развлечения. Сейчас о них говорят на каждом углу, а впервые о таких сетях услышали еще в 1943 году. Кстати, тогда еще не существовало даже понятия «искусственный интеллект», а сети уже были.

По сути, принцип работы нейронных сетей, о которых мы сейчас рассказываем, близок к человеческой нервной системе. Каждый нейрон здесь – это этакая ячейка, у которой имеется множество входных отверстий для получения информации и одно выходное. Каким образом многочисленные входящие сигналы формируются в выходящий, как раз и определяет алгоритм вычисления.

Сама нейросеть представляет собой систему из множества таких нейронов (процессоров). По отдельности эти процессоры достаточно просты (намного проще, чем процессор персонального компьютера), но будучи соединенными в большую систему, нейроны способны выполнять очень сложные задачи по сбору информации, ее анализу и созданию новой. Вот вам хорошо иллюстрирующий этот принцип работы пример:

Представьте себе сельскохозяйственный комбайн, исполнительные механизмы которого снабжены множеством видеокамер. Он делает пять тысяч снимков в минуту каждого растения в полосе своей траектории. Каждый снимок сам по себе ничего не значит. Но используя нейросеть, сравнивая полученные результаты с теми, что есть в его программе, комбайн анализирует — не сорняк ли это, не поражено ли оно болезнью или вредителями. И обрабатывает каждое растение индивидуально. Фантастика? Уже не совсем. А через пять лет может стать нормой.

Об этом рассказывал Влад Шершульский, директор программ технологического сотрудничества Microsoft в России.

Среди основных областей применения нейронных сетей — прогнозирование, принятие решений, распознавание образов, оптимизация, анализ данных. Нейросети лежат в основе большинства современных систем распознавания и синтеза речи, а также распознавания и обработки изображений. Они применяются в некоторых системах навигации, будь то промышленные роботы или беспилотные автомобили. О примерах мы поговорим чуть позже, а пока же узнаем…

В чем их особенность?

В обучаемости. Без этого они просто были бы еще одной математической моделью, но благодаря обучению могут приводить в шок непосвященных. Нейросети могут распознавать более глубокие, иногда неожиданные закономерности в данных. Объяснить на пальцах это не так просто. В общем смысле слова, обучение заключается в нахождении верных коэффициентов связи между нейронами, а также в обобщении данных и выявлении сложных зависимостей между входными и выходными сигналами. Если вначале ее легко обмануть, то через пару сотен тысяч действий, она легко распознает, если вы пытаетесь дать ей что-то не то.

Чаще всего, для этого нужно «прогнать» её работу на десятках миллионов наборов входных данных, указывая ей верные и убирая неверные варианты. Она учитывает это и, когда снова принимается за работу, обрабатывает полученную информацию в зависимости от новых вводных алгоритмов. И так до достижения нужного результата.

Прочитать об этом подробнее, в том числе, на примере «кот и хлеб» можно по этой ссылке. Нам показалось, что это чуть ли не самый понятный вариант объяснения, но если вы сможете лучше – мы будем только рады дополнить этот материал вашим текстом.

Где они применяются?

А вообще список их применения очень широк. Вот только самые полезные и известные истории:

Почему они стали так популярны сегодня, и что ждет в будущем?

Но что еще главное – людям понравилось, и они стали готовы платить за развлечение. В итоге, когда пару лет назад белорусские разработчики создали приложение MSQRD, добавляющее маски к вашим лицам на камере онлайн, они и подумать не могли о том, что пользователем забавной игрушки станут миллионы. Популярность приложения стала так высока, что Facebook купила их за 85 миллионов долларов. Неплохо для небольшой компании!

Другие статьи из рассылки Дирекции ИТ УрФУ в октябре

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *