\documentclass[a4paper.10pt]{scrartcl}

\usepackage[utf8x]{inputenc}
\usepackage[czech]{babel}	%pro kompilaci LATEXem
%\usepackage{czech}		%pro kompilaci CSLATEXem

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}

\usepackage[cm]{fullpage}

\usepackage{graphicx}
\usepackage{epstopdf}
\usepackage[usenames]{color}
\usepackage{subcaption}

\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{circuits.ee.IEC}
\usetikzlibrary{backgrounds}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{graphs}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{calc}
\usetikzlibrary{patterns}

\usepackage{lettrine}
\usepackage{float}

\usepackage{siunitx}
% \usepackage[siunitx,europeanresistors]{circuitikz}
% \usepackage{../mgbondgraph}

\usepackage{upgreek}
\usepackage{xparse}


\title{VIR}
\author{Daniel Kubišta}

\begin{document}
	\maketitle
\section{Zadání}
Máme k dispozici data \( (x_i, y_i) \) pro \( i=1,2,3 \). Chceme najít afinní funkci, která aproximuje \( y \). Konkrétně najít parametry \( w_0, w_1 \) funkce \( \widetilde{y}(x) = f(x) = w_0 + w_1x \), která minimalizuje výraz \( \sum_{i=1}^{3}(y_i-\widetilde{y}(x_i))^2 \). Za ztrátovou funkci volíme L2. Data, která máme k dispozici, jsou následující
\begin{center} 
	\begin{tabular}{|c |c |c |} 
		\hline
		\( i \) & \( x_i \) & \( y_i \) \\\hline
		1 & \( -\sqrt{3/2} \) & 0 \\\hline
		2 & 0 & 1\\\hline
		3 & \( \sqrt{3/2} \) & 1\\\hline	
	\end{tabular}
\end{center}
\subsection{Výpočetní graf a forward pass}
Nakreslete výpočetní graf problému a proveďte forward pass s hodnotami vah \( w_0 = w_1 = 0 \).
\subsection*{Řešení}
Výpočetní graf
\begin{figure}[!h]
	\centering
	\includegraphics[width=0.5\linewidth]{vir_bonus.jpg}
	\caption{Výpočetní graf.}
\end{figure}\\
Forward pass získáme dosazením, pro ztrátovou funkci získáme:
\begin{align}
	\mathcal{L} &= \sum_{i=1}^{3} (w_0+w_1x_i-y_i)^2 = 0 + 1 + 1 = 2
\end{align}
\subsection{Gradient a update vah}
Spočítejte gradient ztrátové funkce a proveďte jeden update vah s learning rate \( \alpha = 0.1 \).
\subsection*{Řešení}
Nejdříve spočítáme složky gradientu
\begin{align}
	\dfrac{\partial\mathcal{L}}{\partial w_0} &= 2\sum_{i=1}^{3}(w_0+w_1x_i-y_i) = 0 -2 -2 = -4\\
	\dfrac{\partial\mathcal{L}}{\partial w_1} &= 2\sum_{i=1}^{3}x_i(w_0+w_1x_i-y_i) = 0 + 0 + 2\sqrt{3/2}(-1) = -\sqrt{6}
\end{align}
Poté aktualizujeme váhy
\begin{align}
	\mathbf{w}^n &= \mathbf{w} - \alpha \dfrac{\partial \mathcal L}{\partial \mathbf{w}}^T = \begin{bmatrix}
		0+0.4\\0+0.1\sqrt{6}
	\end{bmatrix} \doteq \begin{bmatrix}
		0.4 \\ 0.245
	\end{bmatrix}
\end{align}
\subsection{Bonus}
Vyřešte problém pomocí pseudoinverze.\\
Hint: Napište problém ve tvaru \( \mathbf{Aw} = \mathbf{y} \). Dokážete vyjádřit matici \( \mathbf{A} \) jako součin skaláru s maticí, která má ortonormální sloupce?
\subsection*{Řešení}
Problém vyjádříme ve tvaru \( \mathbf{Aw} = \mathbf{y} \) jako
\begin{align}
	\begin{bmatrix}
		1 & -\sqrt{3/2}\\
		1 & 0\\
		1 & \sqrt{3/2}\\
	\end{bmatrix}
	\begin{bmatrix}
		w_0 \\ w_1
	\end{bmatrix} &= 
	\begin{bmatrix}
		0 \\1 \\1
	\end{bmatrix}
\end{align}
Matici \(  \mathbf{A} \) napíšeme jako součin skaláru \( t \) s maticí, která má ortonormální sloupce \( \mathbf{U} \)
\begin{align}
	\mathbf{A} = t\mathbf{U} = \sqrt{3}\begin{bmatrix}
		\sqrt{1/3} & -\sqrt{1/2}\\
		\sqrt{1/3} & 0\\
		\sqrt{1/3} & \sqrt{1/2}\\
	\end{bmatrix}
\end{align}
Matice \( \mathbf{A} \) je úzká a má lineárně nezávislé sloupce, řešení tedy najdeme pomocí levé pseudoinverze jako \( \mathbf{w} = \mathbf{A^+b} \), kde \( \mathbf{A^+} = (\mathbf{A}^T\mathbf{A})^{-1}\mathbf{A}^T = (t^2\mathbf{U}^T\mathbf{U})^{-1}t\mathbf{U}^T \). Díky vlastnosti matice s ortonormálními sloupci \( \mathbf{U}^T\mathbf{U} = \mathbf{I} \) se pseudoinverze zjednoduší na \( \mathbf{A^+} = \mathbf{U}^T/t \). Optimální hodnota vah je tedy
\begin{align}
	\mathbf{w} = \mathbf{U}^t\mathbf{b}/t = \begin{bmatrix}
		\dfrac{2}{3} \\ \dfrac{1}{\sqrt{6}}
	\end{bmatrix}
\end{align}
\end{document}
