From 8d4de0a68e6d636f526336f5aa192963e5419c0b Mon Sep 17 00:00:00 2001 From: luisbro <80113991+luisbro@users.noreply.github.com> Date: Wed, 3 Apr 2024 16:20:42 +0200 Subject: [PATCH] Add Machine Learning 1 (#26) Added examples for machine learning 1, general introduction and learning of DNFs --- Machine Learning 1/grafik.png | Bin 0 -> 61384 bytes .../machine_learning_examples.tex | 390 ++++++++++++++++++ 2 files changed, 390 insertions(+) create mode 100644 Machine Learning 1/grafik.png create mode 100644 Machine Learning 1/machine_learning_examples.tex diff --git a/Machine Learning 1/grafik.png b/Machine Learning 1/grafik.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d3d1e3d8101d1abaa513e75440a4228464d08f GIT binary patch literal 61384 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

1dJH#eC-X*~v+w|^&baQS&hB45 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%0DD7CU*H_Zzxmoq3&>l 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 ZY5UZz(nceZAtwCO+M>HTL&Ngu{{gB4qS^oe literal 0 HcmV?d00001 diff --git a/Machine Learning 1/machine_learning_examples.tex b/Machine Learning 1/machine_learning_examples.tex new file mode 100644 index 0000000..abea81a --- /dev/null +++ b/Machine Learning 1/machine_learning_examples.tex @@ -0,0 +1,390 @@ +\documentclass{article} + +% Language setting +% Replace `english' with e.g. `spanish' to change the document language +\usepackage[english]{babel} + +% Set page size and margins +% Replace `letterpaper' with `a4paper' for UK/EU standard size +\usepackage[a4paper,top=2cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry} + +% Useful packages +\usepackage{amsmath} +\usepackage{graphicx} +\usepackage{dirtytalk} +\usepackage[table]{xcolor}% http://ctan.org/pkg/xcolor +\usepackage[colorlinks=true, allcolors=blue]{hyperref} + +\title{Examples for Machine Learning} +% \author{Luis Brocai} + +\begin{document} +\maketitle + +\say{If I had more time, I would have written a shorter letter.} + +\newpage + +\section{Introduction} + +\subsection{Power set} +The power set is the set of all subset. +For example, let $A = \{1, 2, 3\}$ +\begin{equation*} +2^A = \{ \{\}, \{1\}, \{2\}, \{3\}, \{1, 2\}, \{1,3\}, \{2,3\}, \{1,2,3\}\} +\end{equation*} +In this example, there are $8 = 2^3 = 2^{|A|}$ elements in the power set. +In general $|2^A| = 2^{|A|}$, hence the notation. + +\subsection{m-elementary subsets} +The set of all m-elementary subsets is denoted by $\binom{A}{m}$. +For example, let $A = \{1, 2, 3\}$. +\begin{equation*} + \binom{A}{2} = \{ \{1, 2\}, \{1,3\}, \{2,3\} \}. +\end{equation*} +In this example, there are $3 = \binom{3}{2} = \binom{|A|}{2}$ elements in the set (\href{https://en.wikipedia.org/wiki/Binomial_coefficient}{binomial coefficient}). +In general $ |\binom{A}{2}| = \binom{|A|}{2}$, hence the notation. + +\subsection{set of all maps from A to B} +The set of all maps from A to B is denoted by $B^A$. +For example let $A = \{x, y\}$ and $B = \{1, 2, 3\}$. +\begin{equation*} + \begin{split} + B^A = \{&(x \mapsto 1, y \mapsto 1), \\ + &(x \mapsto 1, y \mapsto 2), \\ + &(x \mapsto 1, y \mapsto 3), \\ + &(x \mapsto 2, y \mapsto 1), \\ + &(x \mapsto 2, y \mapsto 2), \\ + &(x \mapsto 2, y \mapsto 3), \\ + &(x \mapsto 3, y \mapsto 1), \\ + &(x \mapsto 3, y \mapsto 2), \\ + &(x \mapsto 3, y \mapsto 3)\} + \end{split} +\end{equation*} + +In this example, there are $9 = 3^2 = |B|^{|A|}$ elements in the set. +In general $ |B^A| = |B|^{|A|}$, hence the notation. + +\newpage + + +\section{Supervised learning} +The general idea will be presented, once we had an example. + +\section{Learning of DNFs} + +\subsection{Disjunctive Normal Forms} + +DNFs always look a bit like this: +\begin{equation*} + (x_1 \land x_2 \land x_4) \lor (x_1 \land \lnot x_2) \lor (x_2 \land \lnot x_3) +\end{equation*} +It's some and-clauses (conjunctions) joined in one big or-clause (disjunction), hence the name. If we are using 0 and 1 instead of booleans, we can represent an and by multiplying the variables ($x_1 \land x_2 = x_1 * x_2$) and negation as 1 - x ($\lnot x_1 = (1 - x_1)$). I will stick with the boolean notation as I find it more intuitive, even though in the lecture the product notation is chosen to be more consistent with the labelling using 0 and 1. Just know that {0, 1} and {false, true} will be used somewhat interchangeably here. + +\subsection{Example} + +Let's start with an example. Our function / program will take some input about attributes of a city and should return, whether the city is a good choice to live in. +The attributes for each city will be +\begin{enumerate} +\item Are the housing prices high? (yes/no) +\item Does the city have a high population? (yes/no) +\item Is the public transport system good? (yes/no) +\end{enumerate} +And the decision will be +\begin{itemize} +\item Is the city livable? (yes/no) +\end{itemize} +The inputs and outputs are binary decisions (yes/no) which can be represented by booleans (true/false) or binary labels (1/0). +Our function should take in the attributes of a city and use a DNF (disjunctive normal form) to output a decision for the city. +Our DNF for deciding, whether a city is livable could look something like this: +\begin{equation*} + (\lnot x_{costly} \land x_{transport}) +\end{equation*} +Notice, this is a DNF with just one and-clause, which is why there is no $\lor$ required. +It also doesn't make use of all attributes (it skips population). +This DNF would label all cities with low costs and good transport as a livable city. All other cities would not be considered livable. This sounds reasonable, but we are not just interested in finding something that sounds reasonable. We are interested in finding something that fits some labeled data we are given. + +\subsubsection{Labeled Data} + +The data we are given could look something like this. +\begin{itemize} + \item Dresden + \begin{itemize} + \item $x_{costly} = 0$ (low housing prices) + \item $x_{populated} = 1$ (high population (for German standards)) + \item $x_{transport} = 1$ (good public transport) + \item $y = 1$ (It's a good city to live in) + \end{itemize} + + \item Heidelberg + \begin{itemize} + \item $x_{costly} = 1$ + \item $x_{populated} = 0$ + \item $x_{transport} = 1$ + \item $y = 1$ + \end{itemize} + + \item Stuttgart + \begin{itemize} + \item $x_{costly} = 1$ + \item $x_{populated} = 1$ + \item $x_{transport} = 1$ + \item $y = 0$ (I just needed something with a zero, Stuttgart isn't that bad) + \end{itemize} +\end{itemize} + +It could also be written in a table like this: + +\begin{center} + \begin{tabular}{c || c c c | c} + & costly & populated & transport & livable \\ + \hline + \hline + Dresden & 0 & 1 & 1 & 1 \\ + Heidelberg & 1 & 0 & 1 & 1 \\ + Stuttgart & 1 & 1 & 1 & 0 \\ + \end{tabular} +\end{center} + + +The formal notation will be presented in the following paragraphs. + +\subsubsection{S: Set of Samples} + +S is our set of samples: + +\begin{equation*} +S = \{Dresden, Heidelberg, Stuttgart\} +\end{equation*} + +\subsubsection{X: Set of all possible attribute assignments} + +Our attributes are denoted by V. + +\begin{equation*} + V = \{costly, populated, transport\} +\end{equation*} + +In the lecture our attributes are often defined more generally with just $V = \{1, 2, 3\}$. +Every attribute can take on the value 0 or 1. Thus, our set of all possible attribute assignments, denoted by X, will look like this: + +\begin{equation*} + \begin{split} + X = \{&0, 1\}^V \\ + = \{&(costly \mapsto 0, populated \mapsto 0, transport \mapsto 0), \\ + &(costly \mapsto 0, populated \mapsto 0, transport \mapsto 1), \\ + &(costly \mapsto 0, populated \mapsto 1, transport \mapsto 0), \\ + &(costly \mapsto 0, populated \mapsto 1, transport \mapsto 1), \\ + &(costly \mapsto 1, populated \mapsto 0, transport \mapsto 0), \\ + &(costly \mapsto 1, populated \mapsto 0, transport \mapsto 1), \\ + &(costly \mapsto 1, populated \mapsto 1, transport \mapsto 0), \\ + &(costly \mapsto 1, populated \mapsto 1, transport \mapsto 1)\} + \end{split} +\end{equation*} + +\subsubsection{x: Matching attribute assignments to cities} + +Assigning cities one of the attribute assignments will be done with a map x from the samples to some elements of X. + +$(x: S \rightarrow X)$: +\begin{equation*} + \begin{split} + x = \{&Dresden \mapsto (costly \mapsto 0, populated \mapsto 1, transport \mapsto 1), \\ + &Heidelberg \mapsto (costly \mapsto 1, populated \mapsto 0, transport \mapsto 1), \\ + &Stuttgart \mapsto (costly \mapsto 1, populated \mapsto 1, transport \mapsto 1)\} + \end{split} +\end{equation*} + +\subsubsection{y: Labels for cities} + +The labels for the cities (whether they are livable or not) are defined in a map y from S to 0 or 1. + +$(y: S \rightarrow \{0, 1\})$: + +\begin{equation*} + y = (Dresden \mapsto 1, Heidelberg \mapsto 1, Stuttgart \mapsto 0) +\end{equation*} + +\subsection{Deciding} +We now try to find the best DNF that takes in the attributes of a city and returns the correct label for this city. +The DNF defined earlier, which was just a guess, looked like this: +\begin{equation*} + (\lnot x_{costly} \land x_{transport}) +\end{equation*} + +It would map Dresden as follows: +\begin{equation*} + Dresden: (\lnot x_{costly} \land x_{transport}) = \lnot false \land true = true +\end{equation*} + +Or with $\{0, 1\}$: + +\begin{equation*} + Dresden: (1 - x_{costly}) * x_{transport} = (1 - 0) * 1 = 1 +\end{equation*} + +It would correctly assess that Dresden is a livable city. However, it would incorrectly label Heidelberg as a non-livable city. So our goal now is to find among all possible DNFs ($\Theta$) one that correctly maps all cities to their respective label. + +\subsubsection{Formal Notation of a DNF} + +A DNF like this +\begin{equation*} + (\lnot x_{costly} \land \lnot x_{populated} \land x_{transport}) \lor (x_{costly} \land x_{populated}) +\end{equation*} +will be represented as a set. Each element in the set corresponds to one and-clause. Each of these and-clauses is represented by a tuple $(V_0, V_1)$, where $V_0$ defines the variables that occur in the negated form in the and-clause and $V_1$ defines the variables that occur in the non-negated form in the and-clause. The DNF above would become +\begin{equation*} + \{(\{x_{costly}, x_{populated}\}, \{x_{transport}\}), (\{\}, \{x_{costly}, x_{population}\}\} +\end{equation*} + +The set of all possible and-clauses can then be defined as $\Gamma = \{(V_0, V_1) \in 2^V \times 2^V | V_0 \cap V_1 = \emptyset \}$. The restriction $V_0 \cap V_1 = \emptyset$ states that a variable cannot occur in it's negated and non-negated form at the same time. The set of all DNFs $\Theta$ then is all disjunctions that can be built by using elements of the set of all conjunctions $\Gamma$. So $\Theta = 2^\Gamma$. + +\subsubsection{Complexity of DNFs} +Two way of judging the complexity of DNFs are depth and length. The regularizer $R_l$ for length counts the total number of variables that occur in the DNF. The regularizer $R_d$ for depth counts the number of variables in the longest and-clause withing the DNF. The following DNF has a length of 5 and a depth of 3. + +\begin{equation*} + (\lnot x_{costly} \land \lnot x_{populated} \land x_{transport}) \lor (x_{costly} \land x_{populated}) +\end{equation*} + + +\subsubsection{Learning Problem} +The supervised learning problem asks us to find a DNF that gets the labelling correct, while keeping complexity low. How relevant correctness is compared to complexity is determined by a parameter $\lambda$. We want to find a $\theta$ to minimize + +\begin{equation*} + \lambda * R(\theta) + (1-\lambda) * averageLoss(\theta) +\end{equation*} + +Let's look at our example. The first DNF we came up with +\begin{equation*} + (\lnot x_{costly} \land x_{transport}) +\end{equation*} +mapped Dresden and Stuttgart correctly, but failed for Heidelberg. The loss for a sample is 0, if the labelling was correct and 1 if the labelling was incorrect. The total loss is therefore: +\begin{equation*} +\sum_{s \in S} L(f_\theta(x_s), y_s) = 0 + 0 + 1 = 1 +\end{equation*} +The average loss then is $\frac{1}{3}$. The length is 2 and depth is also 2. + + +By looking at the labeled data that is mapped to 1 we can also define a DNF that maps everything correctly: +\begin{equation*} + (\lnot x_{costly} \land x_{populated} \land x_{transport}) \lor + (x_{costly} \land \lnot x_{populated} \land x_{transport}) +\end{equation*} +Since this DNF gets every label right, the total and average loss are 0. However, the length is 6 and depth is 3. So depending on how we weigh correctness vs complexity (and whether we look at depth or length), both of the two DNFs could be more suitable for some given requirements than the other. + +\subsection{Generalizing learning problems} +Our goal was to find a good DNF, that can correctly decide for some input data, whether a city is livable or not. +To define what a good DNF is we looked at two aspects: + +\begin{enumerate} + \item Correctness: We are given some labeled data. The DNF ($\theta$) should be chosen/learned in such a way, that the function gets this training data right. To measure this, we use the Loss function L. + \item Complexity: The function should not be too complicated and have small length or depth. To measure this, we use the regularizer R. +\end{enumerate} + +In general, we are interested in finding a good $\theta$, which has little loss and small complexity. $\theta$ could describe the structure of a DNF, but also the structure of a Binary Decision Tree or parameters in a neural network. + +\subsection{Bounded Depth DNF Problem} + +A different learning problem is the bounded depth DNF problem. It asks us to get every label right, while restricting the depth (longest and-clause) to some limit m. +Both of the examples above fail to be a solution of a \textsc{depth-2-dnf}. One doesn't get everything correct, the other one has a depth over 2. + +A suitable solution would be: + +\begin{equation*} + (\lnot x_{costly} \land x_{populated}) \lor + (x_{costly} \land \lnot x_{populated}) +\end{equation*} + +\subsubsection{Hardness of finding solutions to \textsc{depth-m-DNF}} +Finding a solution to the \textsc{depth-m-dnf} problem for large inputs is hard. For a growing number of attributes and labeled data, the time to find a solution grows at least exponentially in our best known algorithms. In fact, we can show that finding a solution would also allow us to find solutions to problems, for which there is believed to be no algorithm better than exponential time growth. One such problems is \textsc{set-cover}. + +\paragraph{\textsc{set-cover}} + +We are given some sets $\Sigma = \{\{a, b\}, \{b\}, \{c, d\}\}$ and another set $S' = \{a, b, c, d\}$ which we are supposed to cover using only m (for example m=2) sets from $\Sigma$. As suitable cover for m=2 would be $\sigma_1 = \{a, b\}$ and $\sigma_3 = \{c, d\}$. This problem is known to be hard to solve as the inputs grow larger. + +\paragraph{Purpose of a reduction} + +\begin{figure}[h] + \centering + \includegraphics[width=0.5\linewidth]{grafik.png} + \caption{\textsc{depth-m-dnf} is a more general, possibly harder problem than \textsc{set-cover}} + \label{fig:enter-label} +\end{figure} + +We can show that solving \textsc{set-cover} is basically the same problem as some \textsc{depth-m-dnf} problems. This would show that some instances of \textsc{depth-m-dnf} are just as hard to solve as the hard \textsc{set-cover} problem. A program that solves all \textsc{depth-m-dnf} problems would therefore also have to solve the hard \textsc{set-cover} problems making \textsc{depth-m-dnf} at least as difficult as \textsc{set-cover}. Showing that one problem (\textsc{set-cover}) is a `sub-problem' of another problem (\textsc{depth-m-dnf}) is called a reduction (from \textsc{set-cover} to \textsc{depth-m-dnf}). + +\paragraph{The reduction} + +Given any \textsc{set-cover} problem we can translate it into a \textsc{depth-m-dnf} problem. We can then also translate it back, thus showing that the problems are basically the same. The \textsc{set-cover} problem can be written in a table, where every cell denotes, whether the set at the top covers the letter on the left, like this: + +\begin{center} + \begin{tabular}{c || c c c | c} + & $\{a, b\}$ & $\{b\}$ & $\{c, d\}$ & $\{a, b, c, d\}$ \\ + & $\sigma_1$ & $\sigma_2$ & $\sigma_3$ & S' \\ + \hline + \hline + a & covered & not covered & not covered & $\rightarrow$ covered \\ + b & covered & covered & not covered & $\rightarrow$ covered \\ + c & not covered & not covered & covered & $\rightarrow$ covered \\ + d & not covered & not covered & covered & $\rightarrow$ covered + \end{tabular} +\end{center} + + + +We will try to choose some $\sigma$, corresponding to a column, such that each row contains `covered' at least once. Since the rows correspond to each element of S', we have then found a cover for S'. A cover for m=2 is $\sigma_1$ and $\sigma_3$ as established earlier. + + +\begin{center} + \begin{tabular}{c || c c c | c} + & $\{a, b\}$ & $\{b\}$ & $\{c, d\}$ & $\{a, b, c, d\}$ \\ + & \cellcolor{blue!25}$\sigma_1$ & $\sigma_2$ & \cellcolor{blue!25}$\sigma_3$ & S' \\ + \hline + \hline + \cellcolor{blue!25}a & \cellcolor{blue!25}covered & not covered & \cellcolor{blue!10}not covered & $\rightarrow$ covered \\ + \cellcolor{blue!25}b & \cellcolor{blue!25}covered & covered & \cellcolor{blue!10}not covered & $\rightarrow$ covered \\ + \cellcolor{blue!25}c & \cellcolor{blue!10}not covered & not covered & \cellcolor{blue!25}covered & $\rightarrow$ covered \\ + \cellcolor{blue!25}d & \cellcolor{blue!10}not covered & not covered & \cellcolor{blue!25}covered & $\rightarrow$ covered + \end{tabular} +\end{center} + +The equivalent \textsc{depth-m-dnf} problem would look like this: + +\begin{center} + \begin{tabular}{c || c c c | c} + & $\sigma_1$ & $\sigma_2$ & $\sigma_3$ & $y$ \\ + \hline + \hline + a & 0 & 1 & 1 & 0 \\ + b & 0 & 0 & 1 & 0 \\ + c & 1 & 1 & 0 & 0 \\ + d & 1 & 1 & 0 & 0 + \end{tabular} +\end{center} + + +`Covered' has been replaced by 0 and `not covered' by 1.\footnote{That's a bit counter-intuitive, as one might expect it the other way around, but it is caused by the structure of DNFs. The other way around would not work that well. You can try and see what would come out of it.} + +As we can see, the solution of choosing $\sigma_1$ and $\sigma_3$ would also be a solution to our DNF problem: $\sigma_1 \land \sigma_3$ would be a (single-and-clause-) DNF, that calculates each y correctly. + +However, there is one small problem. This showed that a solution of the \textsc{set-cover} can be translated to the DNF problem, but not the other way around. +In fact, $\sigma_1 \land \lnot\sigma_2$ and even $\bot$ would be valid solution to the DNF problem, but not to the \textsc{set-cover} problem.\footnote{The corresponding solutions to the set cover problem would be to choose $\sigma_1$ and $S'\setminus\sigma_2$ or $S'\setminus\{\}$, which do build proper set covers, but the chosen elements aren't in the set $\Sigma$} + +To translate back, we need one more line in our table, that ensures we don't use negations. The equivalent DNF problem becomes: + + +\begin{center} + \begin{tabular}{c || c c c | c} + & $\sigma_1$ & $\sigma_2$ & $\sigma_3$ & $y$ \\ + \hline + \hline + a & 0 & 1 & 1 & 0 \\ + b & 0 & 0 & 1 & 0 \\ + c & 1 & 1 & 0 & 0 \\ + d & 1 & 1 & 0 & 0 \\ + 1 & 1 & 1 & 1 & 1 + \end{tabular} +\end{center} + +Now solutions, such as $\sigma_1 \land \lnot\sigma_2$, are no longer possible and we will also arrive at a DNF like $\sigma_1 \land \sigma_3$, which can be translated back to \textsc{set-cover}. Since length and depth of any single-and-clause-DNF are the same, we have also shown that \textsc{length-m-dnf} is hard to solve.\footnote{For this last part we assumed that the DNF can always be written as a single-and-clause-DNF, which is not at all obvious and only works, due to our 0 and 1 choices. Feel free to pause and ponder why, if we find a solution to the DNF problem, it can be reduced to a single-and-clause-DNF.} + +\end{document} \ No newline at end of file