\documentclass{article}

\input{../common-preamble}
\input{../bmstu-preamble}
\setcounter{secnumdepth}{0}

\begin{document}
\pagestyle{empty}
\makeBMSTUHeader

\makeReportTitle{лабораторной}{1}{Построение персептрона}{Нейронные сети}{а}{Боровик И.Г.}
\newpage
\tableofcontents
\newpage
\section{Цель работы}
Ознакомление c моделью персептрона, а также процессом проектирования и обучения нейронных сетей с использованием программной платформы Neuroph. Neuroph – фреймворк для разработки нейронных сетей, реализованный на языке программирования Java. Neuroph состоит из Java-библиотеки и пользовательского интерфейса для проектирования нейронных сетей (Neuroph Studio). Neuroph Studio позволяет проводить эксперименты с рядом стандартных архитектур нейронных сетей, которые также можно в дальнейшем вставить в собственную программу, используя Java-библиотеку.

\section{Задания}
\begin{enumerate}
\item Создание и обучение простейшего персептрона: занести в отчет структуру спроектированного персептрона, график ошибки (отображается при обучении), а также результаты тестирования нейронной сети.
\item Создание и обучение однослойного персептрона. Определение оптимального количества нейронов скрытого слоя.
\end{enumerate}

\section{Работа и результат:}
\subsection{Задание 1: Создание простейшего персептрона}
В результате прохождения процесса создаия персептрона при помощи мастера создаётся визуализация, представленная на рис. \hrf{pic:viz}.

\begin{figure}[ht]
  \centering
  \includegraphics[width=5cm]{01-nn-lab1-1.png}
  \caption{Визуализация построения персептрона}
  \label{pic:viz}
\end{figure}

На графике обучения (рис. \hrf{pic:gra}) видно, что обучение прошло за два шага и вероятность ошибки за эти шаги снизилась с 0,25 до нуля, поскольку персептрон обучался выполнять логическую операцию ИЛИ на простейшей таблице истинности.

\begin{figure}[ht]
  \centering
  \includegraphics[width=10cm]{01-nn-lab1-2.png}
  \caption{График обучения простейшего персептрона}
  \label{pic:gra}
\end{figure}

Проверочные данные для персептрона полностью совпадают с таблицей истинности для обучения, поэтому на рис. \hrf{pic:res} видно, что персептрон обучен абсолютно безошибочно.

\begin{figure}[ht]
  \centering
  \includegraphics[width=5cm]{01-nn-lab1-3.png}
  \caption{Результаты тестирования персептрона}
  \label{pic:res}
\end{figure}

\newpage
\subsection{Задание 2: Создание однослойного персептрона}
Заданием был сравнительный анализ обучения нескольких персептронов по нескольким изменяемым параметрам обучения. В результате прохождения процесса создаия персептрона при помощи мастера были созданы несколько персептронов. Для чистоты эксперимента, персептроны были обучены на одинаковых наборах данных. Ниже приведена таблица вариантов настроек обучения (в таблице не указано количество входных и выхоодных нейронов, поскольку для всех вариантов оно было одинаковое):
\begin{center}
  \begin{tabular}{|c|c|c|c|}
    \hline
    Скрытые нейроны & Скорость обучения & Момент & Максимальная ошибка \\
    \hline
  	14 & 0,2 & 0,7 & 0,01 \\
    \hline
	14 & 0,3 & 0,6 & 0,01 \\
    \hline
	10 & 0,3 & 0,6 & 0,01 \\
    \hline
	10 & 0,5 & 0,7 & 0,01 \\
    \hline
	5  & 0,2 & 0,7 & 0,01 \\
    \hline
	17 & 0,2 & 0,7 & 0,01 \\
    \hline
	17 & 0,6 & 0,2 & 0,02 \\
    \hline
\end{tabular}
  \label{tabl:sett}
\end{center}

На основе произведённого обучения были получены сведения, представленные в таблице \hrf{tabl:resu} из которой видно, что при допуске большей ошибки в обучении персептрон совершает гораздо меньше итераций. 
\begin{table}[ht!]
  \centering
  \begin{tabular}{|c|c|c|c|c|c|}
    \hline
    Скрытые нейроны & Скорость & Момент & Макс. ошибка & Значение ошибки & Количество итераций \\
    \hline
  	14 & 0,2 & 0,7 & 0,01 & 0,011694999820544496 & 60  \\
    \hline
	14 & 0,3 & 0,6 & 0,01 & 0,011548815049850565 & 38  \\
    \hline
	10 & 0,3 & 0,6 & 0,01 & 0,012183585385078192 & 92  \\
    \hline
	10 & 0,5 & 0,7 & 0,01 & 0,018752958982292532 & 51  \\
    \hline
	5  & 0,2 & 0,7 & 0,01 & 0,017730898002278603 & 450 \\
    \hline
	17 & 0,2 & 0,7 & 0,01 & 0,011347284109802744 & 61  \\
    \hline
	17 & 0,6 & 0,2 & 0,02 & 0,023625908020656096 & 30  \\
    \hline
  \end{tabular}
  \caption{Результаты обучения персептронов}
  \label{tabl:resu}
\end{table}
Также составим график зависимости количества итераций от количества нейронов скрытого слоя, который наглядно демонстрирует, что малое (недостаточное) количество нейронов вынуждает сеть переобучаться значительное количество раз.

\begin{tikzpicture}
  \begin{axis}[
    %title=Title,
    xlabel=Нейронов,
    ylabel=Итераций,]
    \addplot coordinates {(5,450) (10,92) (10,51) (14,60) (14,38) (17,61) (17,30)};
  \end{axis}
\end{tikzpicture}

Снимки экранов с результатами тестирования нейронных сетей представлены в приложении \hyperref[appendix:testing]{\ref{appendix:testing}} на рисунках 4-10

\newpage
\appendix
\section*{Приложения}
\addcontentsline{toc}{section}{Приложения}
%\renewcommand{\thesubsection}{\Alph{subsection}}
\subsection{Результаты тестирования}
\label{appendix:testing}
\begin{figure}[ht]
  \centering
  \includegraphics[width=15cm]{01-nn-lab2-1tst.png}
  \caption{Для задания 1}
  \includegraphics[width=15cm]{01-nn-lab2-2tst.png}
  \caption{Для задания 2}
  \includegraphics[width=15cm]{01-nn-lab2-3tst.png}
  \caption{Для задания 3}
  \includegraphics[width=15cm]{01-nn-lab2-4tst.png}
  \caption{Для задания 4}
  \includegraphics[width=15cm]{01-nn-lab2-5tst.png}
  \caption{Для задания 5}
  \includegraphics[width=15cm]{01-nn-lab2-6tst.png}
  \caption{Для задания 6}
  \includegraphics[width=15cm]{01-nn-lab2-7tst.png}
  \caption{Для задания 7}
\end{figure}

\subsection{Визуализации Neuroph Studio}
\label{appendix:vis}
\begin{figure}[h]
  \centering
  \includegraphics[width=15cm]{01-nn-lab2-12.png}
  \caption{Для заданий 1 и 2}
  \includegraphics[width=15cm]{01-nn-lab2-34.png}
  \caption{Для заданий 3 и 4}
  \includegraphics[width=15cm]{01-nn-lab2-5.png}
  \caption{Для задания 5}
  \includegraphics[width=15cm]{01-nn-lab2-67.png}
  \caption{Для заданий 6 и 7}
\end{figure}

\end{document}