<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>h-wi.log</title>
        <link>https://velog.io/</link>
        <description>"잘" 살고 싶은 사람입니다.</description>
        <lastBuildDate>Sat, 28 Jan 2023 12:11:11 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>h-wi.log</title>
            <url>https://velog.velcdn.com/images/h-wi/profile/7505200f-85e5-42d6-aaf6-1ec2883a0070/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. h-wi.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/h-wi" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Module 4. 지도학습 (Supervised Learning)]]></title>
            <link>https://velog.io/@h-wi/Module-4.-%EC%A7%80%EB%8F%84%ED%95%99%EC%8A%B5-Supervised-Learning</link>
            <guid>https://velog.io/@h-wi/Module-4.-%EC%A7%80%EB%8F%84%ED%95%99%EC%8A%B5-Supervised-Learning</guid>
            <pubDate>Sat, 28 Jan 2023 12:11:11 GMT</pubDate>
            <description><![CDATA[<h1 id="supervised-learning">Supervised Learning</h1>
<p>지도학습은 Label(정답이 있는,지도된) 데이터를 기반으로 mapping 함수 g(X-&gt;Y)를 학습시켜 unseen data x&#39;에 대한 y값을 예측하는 것이다. </p>
<p>labeled data는 여러 feature들로 표현될 수 있다. 예를 들어 자동차가 input data일 때, 자동차의 종류에 따라 가질 수 있는 feature는 가격이 될 수도 있고 엔진의 힘 등이 될 수도 있다. </p>
<p>input data의 feature를 분석하기 위해서는 해당 데이터에 대한 Domain knowledge가 요구되었으나, 최근에는 강화학습을 통해 이 feature들 또한 학습 가능하다고 한다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/681ca592-a928-49e1-aac7-3c6797073a71/image.png" alt=""></p>
<p>위 사진처럼 자동차의 feature에 따라 가족용 차량인지 구분하는 Y값(label)을 예측할 수 있다. 여기서 unseen data x&#39;에 대한 예측을 한 값과 실제 x&#39;의 label의 차이를 <strong>Error</strong>라고 부른다.</p>
<p>한 input data가 있을 때, 이를 trian, validation, test set으로 나누는데 test set의 error를 모델의 error라고 보면 된다. </p>
<p>지도학습의 목표는 크게 두 가지가 있다. </p>
<ol>
<li>test set의 error를 train set의 error를 비슷하게 하여 예측값의 일관성을 높이는 것
-&gt; <strong>unseen data에 대해서 정확도를 갖고 있는지 확인</strong><ol start="2">
<li>train set의 error를 0에 근사하여 예측값의 정확도를 높이는 것이다. -&gt; <strong>잘 학습되었는지 확인</strong></li>
</ol>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/h-wi/post/761d837d-46a6-4f60-b980-ecc795bafe90/image.png" alt=""></p>
<p>variance와 bias는 <strong>Trade-off</strong> 관계에 있다. 따라서 완벽한 모델은 없기 때문에 두 값 사이의 적절한 값을 찾아가는 과정이 중요할 것이다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/842b6a95-06d9-4e64-9f47-90b55994783b/image.png" alt=""></p>
<h2 id="gradient-descent">Gradient Descent</h2>
<p>모델을 선형적으로 구성하기 위해서는 input data와 linear combination이 될 model parameter가 필요하고, 모델의 예측값이 잘 나오도록 이 값들을 학습을 통해 업데이트할 필요가 있다. 지도학습은 이를 위해 Gradient Descent라는 방식으로 model parameter를 업데이트한다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/3b346213-781d-4ca1-9f65-71ad6d8bc63a/image.png" alt=""></p>
<p>위 이미지에서 α(알파)값은 <strong>learning rate</strong>로 기존 파라미터 값을 얼마나 업데이트할지 결정하며, 사용자에 의해 결정되는 <strong>hyper parameter</strong>이다.</p>
<p>Gradient Descent를 하는 방법에도 여러가지가 있는데, 모델 파라미터의 업데이트를 결정하는 주기에 따라 다르다.</p>
<ol>
<li>전체 sample에 대한 Gradient로 진행하는 <strong>Batch GD</strong></li>
<li>sample 하나하나마다 진행하는 <strong>Stochastic GD</strong>,</li>
</ol>
<p><em>노이즈가 있는 data set에 대해 쉽게 영향을 받는다.</em>
3. 사용자가 정한 한 batch 크기만큼 진행하는 <strong>mini-batch GD</strong></p>
<p>이러한 방법들은 loss function의 local minimum에 빠져 최적화된 gradient를 계산하지 못하는 경우가 생기는데, 여기서 <strong>momentum</strong>이라는 개념이 도입된다.</p>
<p>momentum은 학습에 과거 파라미터가 업데이트 되어갔던 경향을 누적하여 반영한다. 따라서 보다 노이즈 데이터에 대해 안정적이며 global minimum을 찾을 수 있는 확률이 높아질 것이다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/e4a7c364-c81f-4064-b06d-130df4c85460/image.png" alt=""></p>
<p>가장 많이는 Gradient descent 알고리즘은 Adam일 것이다. 대부분의 지도 학습에서 Adam 방식이 가장 기본적인 선택이다. <em>learning rate와 momentum을 adaptive하게 변경</em> 해가며 학습을 진행하고, 이 두 값으로부터 파라미터를 업데이트하는 수식을 가진다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/89dc43af-3842-41af-bff7-5f29a54c8541/image.png" alt=""></p>
<h1 id="emsemble-learning">Emsemble Learning</h1>
<p>앙상블 학습은 서로 다른 학습된 모델(classifiers, expert)이 Y값을 예측하도록 하는 방법이다. 예측 정확도가 높아질 뿐만 아니라, 구현도 간단하고 parameter tuning이 많이 필요없기 때문에 주로 쓰이는 지도학습 기법이다.</p>
<h2 id="bagging">Bagging</h2>
<p>Bagging은 모델의 중복과 상관없이 여러 개의 classifier가 train data set을 랜덤하게 나누고 각 모델이 이를 선택하여 학습하도록 하고, 그 결과를 voting이나 averaging으로 예측하는 방법이다.</p>
<p>모델의 학습을 병렬적으로 처리할 수 있으며, voting이나 averaging을 통해 결과를 내기 때문에 variance를 줄여준다는 장점이 있다. 대부분의 경우에서 많은 classifier를 가질 수록 좋은 성능을 보인다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/390d0117-94f8-418c-b36d-94d282218259/image.png" alt=""></p>
<h2 id="boosting">Boosting</h2>
<p>Boostring은 classifier에 데이터를 순차적으로 대입하여 어떤 sample에서 예측이 잘 안되었는지(missclassfied points)에 따라 weight를 부여하여 모델을 학습하는 방법이다.</p>
<p>모델의 복잡도가 낮아 bias가 높은 classifier를 weak classifier라고 하는데, 이를 순차적으로 사용하여 점차적으로 예측력을 높이는 방법이다. 대표적인 알고리즘으로 <strong>AdaBoost</strong>가 있다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/d899486f-9dbd-42d5-865d-a538feb6e54f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/40620388-7f23-4392-a1bf-337584442c3e/image.png" alt=""></p>
<blockquote>
<p>해당 포스트는 LG Aimers 활동 중 이화여자대학교 강제원 교수님의 강의자료를 기반으로 작성된 글입니다. 학습 정리용으로 작성하였으며, 잘못되었거나 수정해야 할 내용이 있을 수 있습니다. 해당 내용이 있다면 이메일이나 댓글로 알려주세요. 감사합니다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Module 3.2 CNN과 Transformer 시계열 회귀]]></title>
            <link>https://velog.io/@h-wi/Module-3.2-CNN%EA%B3%BC-Transformer-%EC%8B%9C%EA%B3%84%EC%97%B4-%ED%9A%8C%EA%B7%80</link>
            <guid>https://velog.io/@h-wi/Module-3.2-CNN%EA%B3%BC-Transformer-%EC%8B%9C%EA%B3%84%EC%97%B4-%ED%9A%8C%EA%B7%80</guid>
            <pubDate>Fri, 27 Jan 2023 12:38:35 GMT</pubDate>
            <description><![CDATA[<h1 id="convolutional-neural-network">Convolutional Neural Network</h1>
<p>CNN은 주로 이미지로부터 필요한 feature를 스스로 학습 시킬수 있도록하는 신경망 구조이다. 이미지의 모든 픽셀을 서로 다른 weight parameter로 연결하면 너무 많은 파라미터의 개수가 너무 많아진다. 따라서 nXn matrix의 filter(kernel)와 이미지 데이터가 갖는 특징인 <strong>Spatially-locality</strong>(인접한 픽셀끼리는 같은 색을 가진 확률이 높은 특징)을 이용하여 이미지의 feature를 학습한다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/b02b8650-8249-4263-922e-5cd798be4d8f/image.png" alt=""></p>
<h2 id="cnn-시계열-회귀">CNN 시계열 회귀</h2>
<p>CNN 모델에 시간 정보가 있는 시계열 데이터를 사용하기 위해서는 이미지 데이터와의 차이점을 알아야 한다. 시계열 데이터는 이미지 데이터와는 다르게 변수들 사이의 공간 연관성(Spatial Correlation)이 존재하지 않는다. 따라서 기존 CNN에서의 filter는 두 축을 기준으로 Convolution을 진행했지만(2-D Convolution) 시계열 데이터를 가진 CNN은 시간 축 단 하나만을 기준으로 Convolutin을 진행한다. 따라서 <strong>기본적으로 filter의 세로 길이가 전체 변수의 개수</strong>로 쓰인다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/954b9e00-04f2-4d24-8d3a-ded0f04fbad5/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/ef551994-566b-462a-b9e9-c28e61ef88f6/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/01ea19aa-6ef7-4a2d-ba5f-9c2db652c3e9/image.png" alt=""></p>
<h2 id="dilated-convolution">Dilated Convolution</h2>
<p>위 방법(Standard Convoluton)은 인접한 시점의 데이터들에 대해서만 Convolution을 진행한다. 이 방법에서 좀 더 효율적인 처리를 위해 Convolution하는 시점의 데이터를 띄엄띄엄 떨어진 시점과도 진행하는 방식을 Dilated Convoltion이라고 하며, 긴 길이에 시계열 데이터를 한번에 처리하기 위해서 빠르고 효과적인 방법이다.</p>
<h1 id="transformer">Transformer</h1>
<p>Transformer 모델은 자연어 처리를 위한 언어 모델로 Attention을 병렬적으로 사용하는 구조를 갖는다.</p>
<p>개괄적으로는 인코더 파트와 디코더 파트를 가지며, 각각 6개의 인코더, 디코더 블럭이 존재한다. </p>
<p>Transformer 모델에 입력값은 <strong>임베딩 벡터</strong>이다. 각 단어의 의미론적 관계(semactic relationship)를 유지하도록 하는 벡터값으로 단어를 표현하는 것을 임베딩 벡터라고 하는데, 모든 단어가 정해진 차원의 임베딩 벡터(512차원 등, Hyperparameter)로 구성된다. </p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/cde6d6a5-938f-46a5-aa3c-43ec11796b76/image.png" alt=""></p>
<p>또한 Transformer는 RNN의 구조와는 달리 단어를 <em>순차적으로 받지 않고 한번에 받는</em> 구조이기 때문에 입력 시퀀스에서 단어들의 위치 관계를 표현해줄 필요가 있다. 따라서 단어 벡터들의 위치 정보를 나타내는 과정인 <strong>포지션 인코딩</strong>이 필요하다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/cd23eefb-461a-4825-828d-9e3dcf4a8d82/image.png" alt=""></p>
<p>이후 인코딩 과정은 셀프 어텐션과 Feed-forward Neural Network(FFNN), 멀티헤드 어텐션 등의 과정을 거친다</p>
<p>주요하게 볼만한 건 두 단계에서 단어의 위치에 따라 의존성 문제가 다르다는 것이다. 셀프 어텐션 과정에서는 단어의 위치에 의존성이 존재하지만, FFNN 과정에서는 의존성이 존재하지 않아 병렬화가 가능하다. </p>
<blockquote>
<p><em>해당 포스트는 트랜스포머 모델을 활용한 시계열 데이터 분석이 주 목적이므로 트랜스포머 모델 구조에 대한 부분은 추후 다른 포스팅에서 자세한 내용을 다루려고 합니다.</em></p>
</blockquote>
<h2 id="transformer-시계열-회귀-tst">Transformer 시계열 회귀 (TST)</h2>
<p>Time-Series Transformer는 트랜스포머 모델을 다변량 시계열 데이터에 최초로 적용한 논문이다. 모델의 인코더 구조만 사용하였으며, Fine-tuning 시에 구조 설계에 따라 Classification, Regression, Missing value imputation 등 다양한 Task에 적용할 수 있다.</p>
<p>TST의 작동을 크게 두 가지 Phase로 구분할 수 있는데, input 값에 대해 masking으로 학습하는 과정(<strong>Pre-training</strong>)과 문제 해결을 위한 <strong>Fine-tuning</strong>과정이다.</p>
<h3 id="pre-training">Pre-training</h3>
<p>Pre-training 과정에는 입력 데이터의 일부를 0으로 바꾸는 Masking 작업 뒤에 Transformer의 입력 차원으로 변환한다. 하지만 fine-tuning 과정에서는 마스킹 없이 그냥 변환이 진행된다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/045a9344-d38a-4053-a271-23c9c0ad5dc8/image.png" alt=""></p>
<p>Pre-training의 목적은 마스킹 된 부분의 값을 모델이 정확하게 예측할 수 있도록 하는 것에 있다. 마스킹은 길이가 어떤 분포를 따르도록 마르코프 체인을 적용하여 결정되며, 모든 변수에서 동일한 시점을 Masking하는 것보다 변수 별로 마르코프 체인을 이용하여 독립적으로 결정하는 것이 우수한 성능을 나타낸다고 한다.</p>
<p>이후에는 기존 트랜스포머 모델의 인코딩과 같은 포지션 인코딩, 셀프 어텐션 과정을 거친다.</p>
<h3 id="fine-tuning">Fine-tuning</h3>
<p><img src="https://velog.velcdn.com/images/h-wi/post/b6865ab2-2649-4848-8e9c-e916c5dff177/image.png" alt=""></p>
<p>fine-tuning task를 수행하기 위해서는 주로 output layer를 제외한 나머지는 <em>freeze</em>하고 진행한다. output layer의 타입에 따라 regressin을 수행할지, classification을 수행할지 결정할 수 있다.</p>
<h3 id="tst의-성능">TST의 성능</h3>
<p><img src="https://velog.velcdn.com/images/h-wi/post/24a8ffb4-43a3-4314-8133-6ace5ef828ce/image.png" alt=""></p>
<p>TST(pretrained)가 TST(sup.only)보다 높은 성능을 도출했다는 것은 기존에 Supervised learning만 수행했던 모델(sup.only)보다도 Pre-training을 통해 모델 스스로 학습한 Unsupervised learning을 함께 수행한 모델(pretrained)이 더 좋은 성능을 보였다는 것으로 해석하면 된다.</p>
<h1 id="배운-점">배운 점</h1>
<p><img src="https://velog.velcdn.com/images/h-wi/post/1ef18b8b-c5b6-4189-9ed5-382596f93e56/image.png" alt=""></p>
<blockquote>
<p>해당 포스트는 LG Aimers 활동 중 고려대학교 강필성 교수님의 강의자료를 기반으로 작성된 글입니다. 학습 정리용으로 작성하였으며, 잘못되었거나 수정해야 할 내용이 있을 수 있습니다. 해당 내용이 있다면 이메일이나 댓글로 알려주세요. 감사합니다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Module 3.1 RNN 기반 시계열 데이터 회귀 ]]></title>
            <link>https://velog.io/@h-wi/Module-3.-%EC%8B%9C%EA%B3%84%EC%97%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%9A%8C%EA%B7%80-%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@h-wi/Module-3.-%EC%8B%9C%EA%B3%84%EC%97%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%9A%8C%EA%B7%80-%EB%B6%84%EC%84%9D</guid>
            <pubDate>Fri, 27 Jan 2023 07:30:02 GMT</pubDate>
            <description><![CDATA[<h1 id="non-sequential-vs-sequential">Non-sequential vs. Sequential</h1>
<p>두 특성의 차이는 시간 정보를 포함하는 데이터인지 아닌지에 따라 나뉜다. </p>
<h2 id="non-sequential-data">Non-Sequential Data</h2>
<p>우선 Non-sequential 데이터는 데이터 표현에서 시간 정보를 포함하지 않는다. 또한 관측치 수(Sample)와 변수의 수(Feature)의 곱으로 표현되며 각 Sample에 따라 Y값(예측치)를 갖는다. 예를 들어 Sample(X)를 고객, Feature를 해당 고객이 이용 중인 금융 상품이라고 하고, Y를 어떤 대출 상품을 이용 중인지 여부를 예측하는 값이라고 하자. 그러면 Y값은 X에 대한 Feature에 대해서 각각 예측된다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/8e1edb08-76a9-48d5-af2d-e888b4e1f3c0/image.png" alt=""></p>
<p>시간 정보를 포함하지 않으므로 Non-sequential data는 순서를 가지지 않는다.따라서 Non-sequential Data를 인공신경망 구조에서 사용하면, hidden node에서 Output까지의 정보 전달이 <strong>직접적</strong>으로 이루어지게 된다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/076b35cd-9548-4f32-a994-ed1ed46d6ea6/image.png" alt=""></p>
<h2 id="sequential-data">Sequential Data</h2>
<p>Sequential Data는 순차적으로 생성되는 데이터로 시간 정보를 갖고 있다. 따라서 Object(Sample)에 대한 시간(Time, 측정 시점 수)과 변수의 수(Feature)의 곱으로 표현된다. 그러므로 Sequential Data는 3차원 Tensor로 표현된다. 또한 Y값은 Non-sequential Data와 마찬가지로  한 Object에 따라 하나의 값을 갖는다. 예를 들면 반도체 공정에서 주기적으로 동시에 측정되는 센서의 값을 통해 Critical Dimension(에러를 일으키는 측정 시점)를 찾을 때 Sequential Data가 사용될 것이다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/507a9125-fbd5-4ef5-8b4e-df5d63112b14/image.png" alt=""></p>
<p>순서가 있는 데이터를 다루는 인공신경망 구조는 hidden node의 입력 변수가 설명 변수 X만이 아니라 이전 상태 T에 대한 정보도 포함하고 있다. 이를 순환신경망 구조라고 부르며, 시계열 데이터를 분석하기 위해서 이러한 신경망 구조가 쓰인다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/9a17b97c-49e9-46a5-8e99-051b2e41489b/image.png" alt=""></p>
<p>위와 같은 구조의 대표적인 모델이자 순차 데이터를 처리하는 데에 특화된 인공신경망 모델이 RNN이다. 각 hidden state마다 같은 Weight paramter가 사용되므로 원하는 데이터 크기(혹은 길이)만큼 받아서 원하는 데이터만큼 Output을 만들 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/963375df-21a6-454e-b2cd-845a189a950d/image.png" alt=""></p>
<h1 id="순환신경망rnn-시계열-회귀">순환신경망(RNN) 시계열 회귀</h1>
<h2 id="rnn과-lstmgru">RNN과 LSTM,GRU</h2>
<p>RNN은 위 그림과 같이 벡터로 표현된 입력에 대해서 Weight parameter(W hh, W xh, W hy)이 곱해지고 활성 함수(activation function)을 적용하면서 Output을 만들어낸다. 그리고 예측한 Output을 통해 정답값과 Loss를 계산하고, 이 Loss function의 값을 최소화하기 위해 Gradient의 값을 줄여나가면서 각 Weight parameter를 조정한다(<em>Backpropagation</em>). 이것이 대략적인 흐름이다. </p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/e466fb91-f5ba-45d8-9a7e-e8c4f62dc1b0/image.png" alt=""></p>
<p>하지만 이 RNN에서의 Backpropagation은 치명적인 문제점이 있는데, Tanh나 Sigmoid와 같은 activation function을 쓰다보면 1보다 작은 값을 Chain rule을 통해 계속 곱하다보니 파라미터를 조정하는 Gradient 정보가 점점 작아지는 문제가 생겨 parameter의 값들의 업데이트가 안된다는 점이 있다. </p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/10b05d82-1c86-4bdc-9f94-dccdbec8cb15/image.png" alt=""></p>
<p>따라서 순환신경망에서는 LSTM, GRU라고 하는 계량된 구조의 모델이 있다. LSTM은 activation function의 영향을 적게 받는 <strong>cell state</strong>라고 하는 정보를 hidden state와 함께 가져 긴 시퀀스 입력에 대한 Short-term memory 특성을 줄여준다. (완전히 없애진 못함) 하지만 Gate라고 하는 학습 시켜야 할 trainable parameter가 3개 존재하기 때문에 학습이 어렵다는 단점이 있다. </p>
<p>GRU는 LSTM보다 조금 더 단순한 구조로 별도의 cell state가 존재하지 않는다. <strong>또한 LSTM에 비해 적은 Gate 수를 가짐에도 불과하고 LSTM과 성능 차이가 크게 나타나진 않다고 한다.</strong></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/34d0552a-025c-4e88-ae65-fa6f4c584375/image.png" alt=""></p>
<h2 id="attention-mechanism">Attention Mechanism</h2>
<p>이전까지 RNN 모델은 맨 마지막 hidden node만을 통해 output을 만들어냈다. 하지만 Attention 기반의 RNN은 마지막 뿐만 아니라 다른 모든 hidden node에 대한 정보와 각 hidden node에 대한 attention score(=&gt; <strong>context vector</strong>)를 통해 output을 만들어낸다. </p>
<p>attention 매커니즘에는 대표적으로 두 가지가 있는데, Bahanau attention과 Luong attention이 있다. 주로 별도의 attention score의 학습이 필요없는 Luong 방식이 쓰인다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/687c7ff8-e82e-4ff7-a5fe-965ffe2751b4/image.png" alt=""></p>
<p>최종 예측에서는 h 틸다라는 값이 사용되며, 이 값은 마지막을 제외한 hidden node들의 정보를 attention score를 통해 담은 context vector와 마지막 hidden node의 contatenation 이후 비선형변환을 한 값이다. <em>이 h 틸다는 최종적으로 소프트맥스 함수에 대입되어 최종 결과를 예측할 것이다.</em></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/11aab20b-f1df-43bd-a91e-524fb0586d31/image.png" alt=""></p>
<h1 id="배운-점">배운 점</h1>
<ol>
<li><p>LSTM과 GRU는 어느정도 성능이 비슷하니 웬만하면 GRU를 쓰는 것이 좋다. (더 적은 파라미터 개수)</p>
</li>
<li><p>Attention mechanism은 추가한 구조와 그렇지 않는 구조보다 예측 성능의 차이가 크므로 RNN 구조를 쓸 때는 반드시 attention mechanusm을 쓰는 것이 좋다.</p>
</li>
</ol>
<blockquote>
<p>해당 포스트는 LG Aimers 활동 중 고려대학교 강필성 교수님의 강의자료를 기반으로 작성된 글입니다. 학습 정리용으로 작성하였으며, 잘못되었거나 수정해야 할 내용이 있을 수 있습니다. 해당 내용이 있다면 이메일이나 댓글로 알려주세요. 감사합니다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Module 2. Explainable AI (XAI)]]></title>
            <link>https://velog.io/@h-wi/Module-2.-Explainable-AI-XAI-8047rhw4</link>
            <guid>https://velog.io/@h-wi/Module-2.-Explainable-AI-XAI-8047rhw4</guid>
            <pubDate>Tue, 17 Jan 2023 09:14:15 GMT</pubDate>
            <description><![CDATA[<h1 id="설명가능한-ai">설명가능한 AI</h1>
<h2 id="xai의-필요성">XAI의 필요성</h2>
<p><img src="https://velog.velcdn.com/images/h-wi/post/57deda28-8a40-4147-a595-e41f68738ea5/image.png" alt=""></p>
<p>딥러닝 모델은 편향(bias)된 정보일 수 있다. 따라서 모델이 예측한 결과에 대해 어떻게 이런 결과가 일어났고, 이 결과를 얼마나 신뢰할 수 있는지 판단되고 평가될 필요가 있다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/30aa1bbd-608f-4724-b58f-6dfb13928b46/image.png" alt=""></p>
<p>위 말의 이미지 경우에는 PascalVOC7의 결과를 분석해보면, 판단에 중요한 영향을 끼친 Pixel이 말이 아닌 왼쪽 밑을 가르키고 있는 것을 알 수 있다. 따라서 해당 모델은 말의 모습이 아니라 말의 사진마다 첨부된 워터마크만을 보고 분류하고 있는 것이었다. 이런 식으로 XAI를 통해 잘못된 모델을 디버깅할 수 있다.</p>
<p>이미지 task에서의 설명력은 주로 시각화를 통해 예측 결과를 중요한 영향을 끼친 특징(<strong>critical pixel</strong>)이나 데이터 sample를 <em>highlighting</em>하는 것으로 이루어진다.</p>
<blockquote>
<p>딥러닝 모델은 매우 복잡하기 때문에 중요한 결정 ( AI기반면접, 대출 가능 여부 등..)을 하는 데에 있어 결과에 대한 이유를 설명해야 할 때도 있다. </p>
</blockquote>
<h2 id="taxonomy-of-xai-method">Taxonomy of XAI method</h2>
<p>XAI는 여러 갈래로 특징을 가질 수 있다.</p>
<ul>
<li><p><strong>Local</strong> : 개별 데이터에 대해서 설명을 하는 방법
: e.g. 한 이미지에서 분류에 중점적으로 사용된 pixel들을 highlighting</p>
</li>
<li><p><strong>Global</strong> : 전체 데이터 셋에 대해서 전반적인 분포를 설명하는 방법</p>
</li>
<li><p><strong>White Box</strong> : 설계자(Explainer)가 모델 내부에 대해 알고 있으며 접근 가능한 경우</p>
</li>
<li><p><strong>Black Box</strong> : 설계자(Explainer)가 모델 내부에 접근할 수 없으며, 입출력을 통해서만 모델을 설명할 수 있는 경우</p>
</li>
<li><p><strong>Model-specific</strong> : 특정 모델, 클래스에 설명 방법이 제한되는 경우
: e.g. CAM의 경우에는 모델 내부에 <em>Global Average Pooling (GAP)</em> 가 필요하다.</p>
</li>
<li><p><strong>Model-agnostic</strong> : 어떤 모델이든 상관 없이 범용적으로 설명 가능하다.</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/h-wi/post/33ed7f3b-5abb-427e-9026-d5bdfc9d601e/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/f159e88d-08af-473e-b457-152697a01e9c/image.png" alt=""></p>
<h1 id="xai-method">XAI Method</h1>
<blockquote>
<p>강의 내용에서 Image Task 위주로 다루고 있기 때문에 정리 내용 또한 Image model에 대한 설명 방법을 포함하고 있습니다.</p>
</blockquote>
<h2 id="simple-gradient-method">Simple Gradient Method</h2>
<p>설명에 대한 근거로 input image에 대한 gradient를 사용하는 방법이다. 
ground truth 이미지와 차이에 대한 loss를 계산하고, 그 loss에 대한 gradient 값이 크다면 그만큼 중요도가 높은 pixel이라고 판단하는 것이다.</p>
<p>이 방법의 장점으로는 <strong>Gradient를 통해 이미지에 대한 설명을 제공하기 때문에 따로 계산할 필요 없이 back propagation을 통해 설명이 가능</strong>하다는 것이다. 따라서 계산이 쉽다. 하지만 단점으로는 Gradient 값이 항상 정확하지 않고 noise가 쉽게 끼는 <strong>Shattering gradient problem</strong>이 있어 설명력이 다소 떨어지는 경우가 잦다는 점이 있다.</p>
<h2 id="class-activation-map-cam">Class Activation Map (CAM)</h2>
<p><img src="https://velog.velcdn.com/images/h-wi/post/ca67b1fa-d640-4d34-937a-a116da05bdbb/image.png" alt=""></p>
<p>각 Activation map을 weight에 곱하고 이를 합하여 Class에 대한 Activation map을 만드는 XAI 방법이다. CNN 모델을 사용한다고 가정했을 때, Conv layer 이후에 마지막에 <em>Global Average Pooling</em>을 사용하여 각 class activation map에 대한 평균으로 최종 설명 이미지를 산출한다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/012c3e48-a7c4-4554-a328-db3cd75646b9/image.png" alt=""></p>
<p>CAM은 이미지에 있는 객체를 인식할 수 있으며, 각 지역에 대해 최대 CAM 값과 주변 20%의 값을 갖는 bounding box를 만들 수도 있다. 확실하게 모델이 중요하게 판단한 부분을 알 수 있다는 장점이 있지만, GAP가 달려 있는 모델에 대해서만 적용가능하다는 한계점이 있다.</p>
<h2 id="grad-cam">Grad-CAM</h2>
<p>이 XAI method는 channel에 따른 Weight를 계산하는 것이 아니라, <strong>Average Pooled Gradient</strong>를 사용하여 가중합을 계산하는 것이다. 따라서 GAP가 없는 모델에서도 사용 가능한 설명 방법이다. 따라서 다양한 아웃풋 모델에 적용할 수 있다는 장점이 있다.</p>
<p>하지만 Average Gradient 값을 사용하기 때문에 결과가 부정확할 수 있다는 단점이 있다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/0c40f624-2c0e-430b-a849-29c0f875776c/image.png" alt=""></p>
<hr>
<h2 id="lime--rise">LIME &amp; RISE</h2>
<p><img src="https://velog.velcdn.com/images/h-wi/post/372c1ef1-bae5-4c04-be4b-44b475724bef/image.png" alt=""></p>
<p>LIME은 중요한 영향을 끼치는 super-pixel에 교란을 주고, 이에 대한 모델의 설명력을 관찰하는 방법이다. 교란한 instance와 확률값을 pair로 활용하고 이를 regression한다. 그리고 그 regression을 통해 모델이 중요하게 판단한 부분을 설명한다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/36725b6f-dd97-46f5-8dbc-e3da6cad02e2/image.png" alt=""></p>
<p>RISE는 random mask를 이용해서 input image를 sampling하여 해당 클래스에 대한 확률값이 얼마나 낮아지는 지 관측하는 방법이다. 어떤 pixel이 가려졌는지에 따라 중요 픽셀 (suepr-pixel)이 어디인지 추출할 수 있게끔 하여 모델이 판단한 부분을 추측할 수 있다.</p>
<h1 id="xai-method-평가-지표">XAI Method 평가 지표</h1>
<h2 id="human-based-visual-assessment">Human-based visual assessment</h2>
<p>이 평가 지표는 사람한테 직접 퀴즈를 내서 설명력을 평가하는 방법이다. 하지만 사람에게 평가를 맡기고 이를 관찰하는 것은 매우 비싼 비용이 요구되며, 자동화되어야 효율적으로 XAI Method를 찾을 수 있을 것이다.</p>
<h2 id="pixel-perturbation">Pixel perturbation</h2>
<p><img src="https://velog.velcdn.com/images/h-wi/post/358b3bca-ef8b-4ce1-adcc-7f85fedb5c64/image.png" alt=""></p>
<blockquote>
<p>해당 포스트는 LG Aimers 활동 중 서울대학교 문태섭 교수님의 강의자료를 기반으로 작성된 글입니다. 학습 정리용으로 작성하였으며, 잘못되었거나 수정해야 할 내용이 있을 수 있습니다. 해당 내용이 있다면 이메일이나 댓글로 알려주세요. 감사합니다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Module 1.2 신뢰성과 ICT 예지보전]]></title>
            <link>https://velog.io/@h-wi/Module-1.2-%EC%8B%A0%EB%A2%B0%EC%84%B1%EA%B3%BC-ICT-%EC%98%88%EC%A7%80%EB%B3%B4%EC%A0%84</link>
            <guid>https://velog.io/@h-wi/Module-1.2-%EC%8B%A0%EB%A2%B0%EC%84%B1%EA%B3%BC-ICT-%EC%98%88%EC%A7%80%EB%B3%B4%EC%A0%84</guid>
            <pubDate>Mon, 09 Jan 2023 12:37:53 GMT</pubDate>
            <description><![CDATA[<h1 id="신뢰성">신뢰성</h1>
<h2 id="신뢰성이란">신뢰성이란?</h2>
<blockquote>
<p><strong>주어진 작동 환경</strong>에서 <strong>주어진 시간</strong> 동안 시스템이 고유의 기능을 수행할 확률</p>
</blockquote>
<p>한마디로 시스템이 사용 환경에서 고장나지 않는 얼마나 견고(Robust)한지를 나타내는 수치이다.</p>
<p>품질은 제작 시점에서의 제품의 특성을 고려하여 정적인 특징이 있다면, 신뢰성은 소비자가 제품이 사용하는 시점에 대해 고려하기 때문에 <strong>동적</strong>인 특징을 갖고 있다고 할 수 있다.</p>
<p>따라서 시험 기간이 <strong>장기적</strong>이며 제품 개선을 위한 데이터도 실험을 통한 관측 자료인 <strong>불완전자료</strong>가 쓰인다. 전기차 리튬 배터리의 성능을 시간의 경과에 따라 측정하고 싶을 때, 리튬 배터리가 열화되기 위해서는 충분한 시간이 필요하므로, 이를 시험을 위해 고의로 <em>가속열화시험</em>하는 것이 불완전자료의 예시라고 볼 수 있다.</p>
<hr>
<h2 id="신뢰성-평가지표-척도">신뢰성 평가지표 (척도)</h2>
<p>제품의 신뢰성을 평가하는 지표는 여러 가지가 있다.</p>
<p>대표적으로는 <strong>신뢰도 (Reliability)</strong> 와 <strong>고장률(Failure rate)</strong> 이 있는데, 
신뢰도는 작동 시작 후 특정 시점 t까지, 즉 *[0,t]동안 고장나지 않을 확률*로써, 시간 t에 대한 함수다. 
<img src="https://velog.velcdn.com/images/h-wi/post/7d294c04-28ef-40e2-8029-eeb2b4ea82e2/image.png" alt=""></p>
<p>고장률은 고장률은 <em>고장난 적 없던 제품이 특정 시점 t에서 ΔT, [t, t+ΔT]동안 고장날 확률</em>로 또한 시간 t에 대한 함수이다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/6d99d2e6-f876-48f9-951c-39d85e738eb1/image.png" alt=""></p>
<hr>
<h2 id="여러-종류의--분포와-memoryless-property">여러 종류의  분포와 Memoryless property</h2>
<p><img src="https://velog.velcdn.com/images/h-wi/post/79fd03d7-4087-4838-9ea1-6dc9864b7a56/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/b1d550a9-5b78-4e44-9ab3-284655677697/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/6b14b1a9-daa6-45ed-9139-d5f991cff9ac/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/def3d1b8-0e1d-4e69-b722-863800f3f2a2/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/f3fc7fb8-0e1d-4f77-bc5f-c82970f69cd1/image.png" alt=""></p>
<hr>
<h1 id="ict-예지보전">ICT 예지보전</h1>
<h2 id="시스템-보전">시스템 보전</h2>
<blockquote>
<p>원자력 발전이나 항공기 운항과 같은 대규모 시스템의 고장을 예측하거나 발생 시 이를 빠르게 복수하는 방법</p>
</blockquote>
<p>보전은 크게 두 가지로 나눌 수 있는데, 예방 보전과 사후 보전이 있다. 먼저 사후보전은 점검이나 정기교환을 하지 않고, 고장이 나면 이를 수리하는 것이다. 장비의 수명이 다할 때까지 쓸 순 있겠지만, 고장이 치명적인 곳에는 쓰일 수 없을 것이다. 따라서 예방 보전이 필요하다.</p>
<p>예방 보전에도 두 가지 종류가 있다. <strong>시간기준보전(TBM)</strong>과 <strong>상태기준보전(CBM)</strong>이다. </p>
<p>시간기준보전은 장비의 열화상태(얼마나 낡았는지)에 가장 비례하는 변수(생산성, 작동회수 등)을 선정하여 이 변수의 수리 주기를 정한다. 수리 주기까지 사용하면 무조건 수리하는 방식이다. 고장의 위험은 적지만 각 장비가 과잉보존되어 효율은 낮을 것이다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/1a97acbc-bb7d-4d00-855e-cbdb8cc7d3f8/image.png" alt=""></p>
<p>상태기준보전은 장비의 열화상태를 측정 및 해석하여 실시간으로 값이 정해진 열화 기준에 다다르면 수리하는 방식이다. 체계 구축이나 더 많은 인력을 필요로 하지만 과잉보존 문제가 해결되는 장점이 있다. 이 방식에서는 장비의 상태를 감지하기 위한 센서나 신호 처리 기술이 필요할 것이다. 따라서 이 방식은 <strong>ICT 기반 예지보전</strong> 방식이 되겠다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/414edde1-2854-47d8-a6f0-f203af35aae0/image.png" alt=""></p>
<hr>
<h2 id="cbm-case---psm-lab">CBM Case - PSM Lab</h2>
<p><img src="https://velog.velcdn.com/images/h-wi/post/725f32a9-0495-44b4-b5c1-5d51a45bbf60/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/c84f5f01-ae66-47f2-8fd6-71df51c46e27/image.png" alt=""></p>
<hr>
<blockquote>
<p>해당 포스트는 LG Aimers 활동 중 한양대학교 배석주 교수님의 강의자료를 기반으로 작성된 글입니다. 학습 정리용으로 작성하였으며, 잘못되었거나 수정해야 할 내용이 있을 수 있습니다. 해당 내용이 있다면 이메일이나 댓글로 알려주세요. 감사합니다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Module 1.1 품질 및 품질 비용]]></title>
            <link>https://velog.io/@h-wi/57blkx1s</link>
            <guid>https://velog.io/@h-wi/57blkx1s</guid>
            <pubDate>Sat, 07 Jan 2023 06:53:37 GMT</pubDate>
            <description><![CDATA[<h1 id="품질-및-품질비용">품질 및 품질비용</h1>
<h2 id="--품질이란">- 품질이란?</h2>
<blockquote>
<p>시장점유율의 확대나 보다 높은 원가 비용을 통하여 주로 <strong><em>판매수익의 증대</em></strong> 에 기여하는 요소 &amp;&amp; 재작업이나 고객불만으로 인한 폐기처분 등의 감소를 통한 <strong><em>원가절감</em></strong>에 기여하는 요소.</p>
</blockquote>
<p>소비자는 제품이나 서비스를 사용하는 입장에서 요구하는 품질이 있을 것이고, 공급자도 원가,시설,인력 등의 기업의 제조역량을 고려하여 정해지는 품질이 있다.
<img src="https://velog.velcdn.com/images/h-wi/post/6faa7302-fb60-456e-acde-b2c72bb6d845/image.png" alt="한양대학교_배석주교수님_강의자료"></p>
<p>따라서 쉽게 말하면 품질은 <strong>&quot;소비자와 공급자 모두가 원하는 제품 규격에 부합하는 정도&quot;</strong> 라고 정의할 수 있다.</p>
<p>요즘에는 고객의 명시적, 묵시적 요구를 충족시킬 수 있는 능력이 있는 특징이나 특성이 더 중요시 되고 있다. (ISO 9000 Series 품질 경영 시스템, 규격 적합성 -&gt; 고객 요구의 충족성) </p>
<hr>
<h2 id="--저품질비용-cost-of-poor-quality">- 저품질비용 (Cost of Poor Quality)</h2>
<p><img src="https://velog.velcdn.com/images/h-wi/post/bc852785-7be1-4b9b-b9b2-27e64955f0ee/image.png" alt=""></p>
<p>저품질로 인한 손실은 일부(Q-Cost)에 불과해보일 수 있지만, 이에 따른 연쇄 작용으로 인해 추가적인 손실(Hidden Cost)이 발생할 수 있으며, 이를 <strong>저품질 비용</strong>이라고 한다.</p>
<p>이것을 줄일수록 소비자의 인식이 향상되면서 보다 높은 시장 점유율을 가져갈 수 있으며, 추가적인 고품질 제품을 제공하는 등의 선순환으로 이어질 수도 있다.</p>
<p>제품의 생산단계 별로 예상되는 품질 비용이 있으며(예방비용, 평가비용, 내부실패비용, 외부실패비용), 이를 줄이기 위한 원천적인 대응(품질 관리)이 반드시 필요할 것이다. </p>
<hr>
<h2 id="--품질-관리">- 품질 관리</h2>
<h3 id="이상원인과-우연원인">이상원인과 우연원인</h3>
<p>저품질비용을 줄이고 싶다면 품질 변동을 유발하는 원인이 무엇인지 알아야 한다.</p>
<p>제품 공정에서의 품질 변동 원인은 크게 두가지로 나눌 수 있다. 비정상적(Irregular) 요인에서 큰 변동 (e.g. 재료 불량, 비숙련 작업자, 잘못된 설정)을 일으키는 <strong>이상 원인</strong>과 정상적 상태에서 고유한 작은 변동(e.g. 재료, 기기 위치의 미약한 변동)을 일으키는 <strong>우연 원인</strong>이 그것이다.</p>
<p>공정상에서 우연 변동 원인만이 존재하면 안정되고 품질이 예측 가능하다. 하지만 이상 변동 원인이 같이 존재하면, 예측 불가능하다.</p>
<p>*이는 통계적 방법에서 품질을 결정짓는 X Feature(X&#39;s)가 될 수 있을 것이다.</p>
<h3 id="spc">SPC</h3>
<p>이 원인을 통해 <strong>통계적 방법</strong>으로 공정을 효율적으로 운영하는 관리 방법을 SPC(Statistical, Process, Control)이라고 부른다.  </p>
<blockquote>
<p>SPC는 불량 원인을 쉽게 발견하도록 도와주고, 공정 상태를 탐지하며, 개선을 위한 대책에 결정에 도움을 주는 과학적 관리기술이다.</p>
</blockquote>
<p>공정 입력(X&#39;s)에 대한 특성을 파악하고 이에 대한 출력(Y&#39;s)를 계속해서 모니터링 하는 것이 제품 특성을 관리하는 것이라고 볼 수 있다. 즉, <strong>인과 관계 (Y=F(x))</strong> 를 이해하고 이를 바탕으로 제품의 상태를 예측할 수 있다면 <em>공정이 관리 하에 있다</em> 라고 말한다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/e5fbb1a5-122d-4b17-9fe2-00f5de25ce0c/image.png" alt=""></p>
<p>SPC는 품질 관리(QC) 7가지 도구로 주로 이루어지며, QC7은 적은 데이터로부터 가능한 한 신뢰성이 높은 객관적인 정보를 얻는데 가장 유효한 수단으로 알려져 있다.</p>
<p>QC7에는 모두 파레토 차트, 특성요인도, 체크시트, 히스토그램, 산점도, 그래프, 관리도가 있다.</p>
<p>특히 <em>두 종류</em>의 데이터 사이의 관계를 그림으로 나타내는 <strong>산점도(Scatter Diagram)</strong>와, 관리한계선을 이용하여 공정을 관리하는 <strong>관리도</strong>가 주로 쓰인다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/ff6b46be-568a-4fa9-87e9-3c97c5dafac2/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/bca1e3d4-45cc-4767-a042-902649436622/image.png" alt=""></p>
<h3 id="관리도">관리도</h3>
<p>여러 변수들을 관리하기 위해서는 각 변수들이 모두 독립적이지 않다면, <strong>다변량 관리도</strong>를 사용해야 한다.</p>
<p>또, 관리도에는 연속 측정 데이터를 기반으로 하는 <strong>계량형 관리도</strong>와 이산형 특성치 데이터를 관리하는 <strong>계수형 관리도</strong>가 있는데, 계량형 관리도 작성법은 다음과 같다.</p>
<ul>
<li>XBar-R 관리도 (계량형, From 마스터플랜컨설팅 네이버 블로그)</li>
</ul>
<p><a href="https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=jiwoo6941&amp;logNo=220248024509">https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=jiwoo6941&amp;logNo=220248024509</a></p>
<p>관리도를 만들었다면 다음과 같은 현상이 있을 때, 제품 공정이 이상 상태에 있다고 분석할 수 있다.
<img src="https://velog.velcdn.com/images/h-wi/post/b86a3ab9-44dd-4faa-b280-e26b01070cca/image.png" alt=""></p>
<hr>
<h2 id="--스마트-품질경영">- 스마트 품질경영</h2>
<blockquote>
<p>빅데이터와 인공지능을 통한 품질경영 방식</p>
</blockquote>
<p>복잡한 공정을 통해 생산되는 제품군인 반도체나 디스플레이 같은 경우는 지금까지 다뤘던 분석을 통해 공정의 품질 상태를 파악하기 어렵다. 따라서 최근엔 빅데이터와 AI를 활용하는 새로운 방식이 쓰이고 있다.</p>
<p>예시가 될 수 있는 분석 대상은 디스플레이의 터치 패널 공정이다. 공정에 따라 수많은 공정 변수가 존재하는데, <strong>불량을 일으키는 적절한 공정변수</strong>는 이 중에 소수인 경우가 많으므로 주요 공정변수를 잘 간추리는 것이 가장 중요한 일이 될 것이다. </p>
<p>터치 패널 공정에서의 공정 변수는 GLASS를 가공할 때의 조건 및 계측치로 총 59개가 있으며, 정상 데이터는 102개, 불량 데이터는 5개로 가정한다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/fe79d23c-9646-4810-afb1-d3429144d015/image.png" alt=""></p>
<h3 id="eda---군집분석-clustering-analysis">EDA - 군집분석 (Clustering Analysis)</h3>
<p>주요 공정변수를 추출하기 위해서는 첫번째로 <strong>군집 분석(Clustering Analysis)</strong>을 통해 공정변수 간의 유사성을 분석해야 한다.</p>
<p>우선 Clustering을 통해 유사 패턴(유사성)을 가지는 공정변수끼리 <em>트리 다이어그램</em>을 이용해 묶는다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/a34af03d-22cf-41f9-8e83-dc71a463e43c/image.png" alt=""></p>
<p>이후 해당 Cluster 안에서 <em>대표 공정변수</em>를 추출하면 1차적으로 주요 공정변수를 탐지할 수 있다. </p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/2a8a0650-0a88-48f2-ae14-050098a92e18/image.png" alt=""></p>
<h3 id="eda---회귀분석regression--변수-선택법-feature-selection">EDA - 회귀분석(Regression) &amp; 변수 선택법 (Feature Selection)</h3>
<p><img src="https://velog.velcdn.com/images/h-wi/post/d44ff575-7a8f-4a5b-8525-894b3c535a31/image.png" alt=""></p>
<p>다음으로는 여러 공정변수(X) 에 대한 <strong>다중회귀분석(Multiple regression analysis)</strong> 을 통해 품질 계측치(Y)를 예측한다. 위의 식은 n개의 공정 변수(X)에 대한 1개의 품질 계측변수(y,예측)를 나타낸 식이다. (k는 Bias, β는 Weight)</p>
<p>식을 통해 Regression Model이 만들어지면, 이것의 설명력과 예측력을 평가함으로써 어떤 공정변수들이 품질에 영향을 주는지 파악한다.</p>
<p>모델의 설명력을 평가하기 위해서는 <strong>Adjust R-Squared Score</strong>가 쓰인다. 즉 모델이 주어진 데이터들을 얼마나 잘 나타냈는지를 평가하는 것이다. 일반적으로 높을 수록 좋은 설명력을 가진 것으로, 0.8 이상일 시에 설명력이 높다고 판단한다. 하지만 높다고만 해서 해당 모델이 모든 데이터를 완벽하게 설명할 수 있는 것은 아니다.</p>
<p>*모든 공정변수를 선택한 Regression Model의 Adj-R score가 가장 높을 것이다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/e8e6958e-b07e-4314-9771-d42dd08c4878/image.png" alt=""></p>
<p>모델의 예측력을 평가하기 위해서는 <strong>Root Mean Squared Error of Prediction (RMSEP)</strong> 가 쓰인다. 
<img src="https://velog.velcdn.com/images/h-wi/post/72827463-b608-4b45-b5d2-dc487b826d43/image.png" alt=""></p>
<p>말 그대로 어떤 공정변수 X에 대한 실제값(특성치)와 예측값(예측치)의 차이를 제곱하여 모두 더하고, 이를 data sample의 크기로 나누어 루트를 씌운 값이다. 해당 값은 낮을수록 예측력이 우수하다고 높다고 판단한다.</p>
<blockquote>
<p>결국 회귀분석을 통한 공정변수 선택은 위 두 가지 평가 지표를 사용하며한다. 최대한 적은 공정변수, 최대한 높은 Adj-R Score, 최대한 낮은 RMSEP Score를 가진 모델의 공정변수를 선택함으로써 품질에 영향을 주는 공정변수를 찾을 수 있다. </p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/h-wi/post/b3da2c07-3c82-4a49-89d8-20e97d6dacd3/image.png" alt=""></p>
<h3 id="선정한-변수를-기반으로-예측-모델-구축---주성분회귀와-부분최소제곱회귀">선정한 변수를 기반으로 예측 모델 구축 - 주성분회귀와 부분최소제곱회귀</h3>
<p>이렇게 선정한 공정변수들 사이에는 상관 관계가 존재할 수도 있는데, 이런 성질을 <strong>다중공선성</strong>이라고 한다.</p>
<p>이는 회귀 계수를 추정하기 위한 행렬곱의 역을 산출할 수 없게 하기 때문에 예측오차가 증가하여 예측력을 저하시킬 수 있다.</p>
<p>다중공선성을 해결하기 위해서는 공정변수의 정보를 그대로 사용하는 것이 아니라 <em>주성분</em>이나 <em>잠재변수</em>라는 정보로 변환하여 사용해야 한다. 주성분으로 변환하여 사용하는 분석 기법을 <strong>주성분분석</strong>, 잠재변수로 변환하여 사용하는 분석 기법을 <strong>부분최소제곱분석</strong>이라고 한다. </p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/cb246b46-9013-437b-a679-39a42d2d56f8/image.png" alt=""></p>
<p>최종적으로 Regression Model이 구축되면 이를 검증하기 위해서 학습 데이터 셋과 검증 데이터 셋을 나눈다. 그리고 각 데이터 셋을 통해 품질 예측치(Predict)와 품질 계측치(Label)을 비교한다.  </p>
<p>*학습 데이터 셋에서 쓰이는 주성분과 검증 데이터 셋의 주성분의 개수가 다르다. 왜 다른지는 해커톤에서 실제로 해보면서 알아가는 게 효율적일 것 같다.</p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/5b288f2d-e7e6-4dca-96f2-eec564dff41f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h-wi/post/8a8d501d-2fa2-47c7-ab3c-09f876d23c4a/image.png" alt=""></p>
<hr>
<blockquote>
<p>해당 포스트는 LG Aimers 활동 중 한양대학교 배석주 교수님의 강의자료를 기반으로 작성된 글입니다. 학습 정리용으로 작성하였으며, 잘못되었거나 수정해야 할 내용이 있을 수 있습니다. 해당 내용이 있다면 이메일이나 댓글로 알려주세요. 감사합니다.</p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>