<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MLP |</title><link>https://chaeniverse.github.io/tags/mlp/</link><atom:link href="https://chaeniverse.github.io/tags/mlp/index.xml" rel="self" type="application/rss+xml"/><description>MLP</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sat, 21 Sep 2024 00:00:00 +0000</lastBuildDate><image><url>https://chaeniverse.github.io/media/icon_hu_da05098ef60dc2e7.png</url><title>MLP</title><link>https://chaeniverse.github.io/tags/mlp/</link></image><item><title>MLP (Multi-Layer Perceptron)</title><link>https://chaeniverse.github.io/blog/mlp-multi-layer-perceptron/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>https://chaeniverse.github.io/blog/mlp-multi-layer-perceptron/</guid><description>&lt;h2 id="perceptron의-한계"&gt;Perceptron의 한계&lt;/h2&gt;
&lt;p&gt;단일 perceptron은 두 클래스를 분리하는 hyperplane을 만드는 &lt;strong&gt;선형 모델&lt;/strong&gt;. 변수 관계가 비선형이면 잡아내지 못한다 — 곡선 패턴이 더 적합한 복잡한 관계를 선형 회귀가 잡을 수 없는 것과 같은 한계.&lt;/p&gt;
&lt;h2 id="mlp-도입"&gt;MLP 도입&lt;/h2&gt;
&lt;p&gt;핵심 원리: &lt;strong&gt;여러 선을 결합해 복잡한 문제를 작은 부분 문제들로 분해&lt;/strong&gt;한다. 서로 다른 영역을 식별하는 여러 perceptron을 만들고 그 출력을 조합 → 비선형 결정 경계 형성.&lt;/p&gt;
&lt;p&gt;여러 hidden layer를 쌓으면 모델 복잡도가 증가하고 — 이게 바로 &lt;strong&gt;딥러닝 아키텍처의 시작&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="decision-boundary-비교"&gt;Decision Boundary 비교&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;모델&lt;/th&gt;
&lt;th&gt;결정 경계&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Logistic regression&lt;/td&gt;
&lt;td&gt;선 1개, 임의 방향&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Decision tree&lt;/td&gt;
&lt;td&gt;축에 수직인 여러 선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MLP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;선 개수와 방향 모두 자유롭게 조정 가능&lt;/strong&gt; (hidden layer / node 수로 복잡도 제어)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="기본-구조"&gt;기본 구조&lt;/h2&gt;
&lt;p&gt;각 input은 모든 hidden node에 서로 다른 가중치로 연결됨. Hidden node가 정보를 처리해 output node에서 집계.&lt;/p&gt;
&lt;p&gt;분류의 경우 output node 수 = 클래스 수. &lt;strong&gt;One-hot encoding&lt;/strong&gt; + &lt;strong&gt;softmax&lt;/strong&gt; 로 확률 분포 출력:&lt;/p&gt;
$$y_j = \frac{e^{z_j}}{\sum_{k=1}^{c} e^{z_k}}$$&lt;h2 id="hidden-node의-역할"&gt;Hidden Node의 역할&lt;/h2&gt;
&lt;p&gt;Hidden node 수 = &lt;strong&gt;네트워크의 복잡도&lt;/strong&gt;. 노드가 많을수록 더 정교한 결정 경계가 가능.&lt;/p&gt;
&lt;h2 id="xor-문제-다시-보기"&gt;XOR 문제 다시 보기&lt;/h2&gt;
&lt;p&gt;선형 분리가 불가능한 데이터를 hidden node를 통해 &lt;strong&gt;분리 가능한 공간으로 변환&lt;/strong&gt;한다. 중간 단계에서 선형 분리들을 만들고 결합하면, 원래는 분리 불가능했던 데이터셋도 분류 가능해진다.&lt;/p&gt;
&lt;h2 id="error-back-propagation"&gt;Error Back-Propagation&lt;/h2&gt;
&lt;p&gt;Gradient descent + backpropagation으로 가중치 업데이트.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Output → Hidden 가중치&lt;/strong&gt;: 실제값과 예측값의 차이 × hidden node 값에 비례해 조정&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Input → Hidden 가중치&lt;/strong&gt;: 오차 크기와 input 값에 의존&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="학습-종료--기타"&gt;학습 종료 / 기타&lt;/h2&gt;
&lt;p&gt;학습은 다음 조건에서 종료:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;가중치 변화가 미미함&lt;/li&gt;
&lt;li&gt;Validation 오차가 임계값 아래로 떨어짐&lt;/li&gt;
&lt;li&gt;미리 정한 epoch 수 도달&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overfitting 방지를 위한 메커니즘들이 존재 (dropout, regularization, early stopping 등).&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;원문:
&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>