<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>cho_se_ny.log</title>
        <link>https://velog.io/</link>
        <description>학부생 3학년 </description>
        <lastBuildDate>Thu, 10 Nov 2022 07:02:52 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>cho_se_ny.log</title>
            <url>https://velog.velcdn.com/images/cho_se_ny/profile/143197de-647a-4240-be5d-7aee898c4afb/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. cho_se_ny.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/cho_se_ny" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[논문리뷰] Simple and Deep Graph Convolutional Networks]]></title>
            <link>https://velog.io/@cho_se_ny/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-%EC%9E%91%EC%84%B1-%EC%A4%91-Simple-and-Deep-Graph-Convolutional-Networks</link>
            <guid>https://velog.io/@cho_se_ny/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-%EC%9E%91%EC%84%B1-%EC%A4%91-Simple-and-Deep-Graph-Convolutional-Networks</guid>
            <pubDate>Thu, 10 Nov 2022 07:02:52 GMT</pubDate>
            <description><![CDATA[<p><a href="http://proceedings.mlr.press/v119/chen20v/chen20v.pdf">http://proceedings.mlr.press/v119/chen20v/chen20v.pdf</a></p>
<p>Graph convolutional networks(GCNs)
최근 대부분의 GCN 모델들은 over-smoothing 문제가 있다.</p>
<pre><code>over-smoothing
지나친 획일화 / 그래프 신경망의 층의 수가 증가하면서 정점의 임베딩이 서로 유사해지는 현상이다. 전반적인 그래프를 보게되어 정점들이 비슷한 임베딩을 얻게 되어 분류 성능이 떠어진다. </code></pre><p>본 논문에서는 GCNII을 제시한다. 
Initial residual and Identity mapping. 
이 두 가지 기술과 함께 vanilla GCN 모델을 확장했다. </p>
<p>semi - 혹은 full-supervised tasks 에서 최첨단 성능을 보여준다.</p>
<p>일단 GCNs은 CNNs의 </p>
<p>2-layer GCN, GAR는 좋은 성능을 보여준다. 
그러나 고차원으로 갈수록 over-smoothing 문제가 일어난다.</p>
<p>ResNet은 비슷한 문제를 컴퓨터 비전에서 해결했다 residual connection으로 
하지만 GCN에 넣으면 느려진다.</p>
<p>결론적으로 over-smoothing 문제를 핼결을 하고 GCN 모델을 설계하는 것은 아직도 미해결 문제이다.
본 논문이세넌 vanilla GCN에서 두 가지를 수정한다.
Graph Convolutional Network via Initial residual and Identity mapping(GCNII)</p>
<p>각 레이어에 initial residual는 input layer에서 skip connection을 구성하며 ID mapping은 가중치 행렬에 ID행렬을 추가한다.</p>
<p>vanilla GCN은 k개의 layer을 쌓아 미리 결정된 계수를 갖는 다항식 필터의 k번째 차수를 시뮬레이션하는 것이다.
반면 본 논문에서는 k-layer GCNII 모델은 임의의 계수로 차수 k의 다항식 스펙트럼 필터를 표현할 수 있음을 증명한다.</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/0fc808f9-caeb-4c25-a5a3-c2c372f59bcf/image.png" alt="">
k-layer를 쌓으면서 
차수행렬, 인접행렬</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/a614d105-fb54-4720-adb3-611427b80c7f/image.png" alt="">
l-th layer GCNII</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/9fa06d25-83c1-4eb4-981a-0332b2e7f302/image.png" alt="">
초 매개 변수</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/c3a2fbd9-e9fe-407d-a737-2df6434aca96/image.png" alt="">
the graph convolution matrix with the renormalization trick</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/7a3c9f5b-4798-4a3c-ba14-71807f7c21e0/image.png" alt="">
vanilla GCN 과 비교하여 </p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/57b63f71-fdcf-41fe-a56f-638ea53d1920/image.png" alt="">
smoothed representation PH를 첫 번째 층 H(0)에 initial residual과 결합한다.</p>
<p>l번째 가중치 행렬 W(l)에 identity mapping In을 추가한다.</p>
<p>We propose that, instead of using a residual connection to carry the information from the previous layer, we construct a connection to the initial representation H(0).</p>
<p>Initial residual만으로는 아직 문제라서
ResNet의 identity mapping을 빌린다.</p>
<p>identity mapping은 <img src="https://velog.velcdn.com/images/cho_se_ny/post/9f38cc4e-0b78-479f-b8ad-4abb67a93685/image.png" alt="">
를 충분히 작게 설정함으로, deep한 GCNII는 가중치 행렬 W(l)를 무시하고 본질적으로 APPNP를 시뮬레이션한다. 
<img src="https://velog.velcdn.com/images/cho_se_ny/post/f073abc3-5816-4468-9ad7-e7954920e404/image.png" alt=""></p>
<p>feature matrix의 서로 다른 차원 간의 빈번한 상호 작용은 semi-supervised 작업에서 모델의 성능을 저하시킨다는 것을 발견해서 PH를 직접 출력에 mapping하면 상호 작용이 감소한다.</p>
<p>identity mapping은 semi-supervised 작업에서 특히 유용하다. 
<img src="https://velog.velcdn.com/images/cho_se_ny/post/bb0e1736-f468-486d-a85c-423a7453353a/image.png" alt="">
위의 식과 같은 형태의 선형 ResNet은 다음 특성을 만족한다.
    1) 최적의 가중치 행렬 W(l)은 작은 norms 갖는다.
        -과적합을 피하기 위해 W^l에 강룍한 정규화를 적용할 수 있다.
    2) 유일한 임계점은 global minimum이다. 
        -훈련 데이터가 제한된 semi-supervised 작업에 바람직하다</p>
<p>이론적으로 k-layer GCN의 노드 기능이 subspace로 수렴되어 정보 손실을 발생한다.
특히 수렴 속도는 s^K에 따라 달라지는데, 여기서 s는 가중치 행렬 W(l)의 최대 특이치다. l=0,......,K-1.</p>
<p>W(l)을
<img src="https://velog.velcdn.com/images/cho_se_ny/post/a5703477-8cbe-4ddc-925f-81ea711aa29c/image.png" alt="">
위와 같이 대체하고 W(l)에 정규화를 해서 norm을 작게 한다.
결과적으로, <img src="https://velog.velcdn.com/images/cho_se_ny/post/f25e0630-c4b2-41a7-9dc5-2a30e84230d7/image.png" alt="">
1과 가까울 것이다.
최대 특이치도 1에 가까워 s^K가 크고 정보 손실이 완화된 것을 의미한다.</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/9f38cc4e-0b78-479f-b8ad-4abb67a93685/image.png" alt=""> 
이것의 원리는 가중치 행렬의 붕괴가 더 많은 층을 쌓을수록 적응적으로 증가한다는 것이다.<img src="https://velog.velcdn.com/images/cho_se_ny/post/2ed773c3-d966-4b71-9fa4-a463b16d6346/image.png" alt="">
이와 같이 설정하고
<img src="https://velog.velcdn.com/images/cho_se_ny/post/4a3270e8-35c7-4264-ae44-3a0ebccf11ef/image.png" alt="">
하이퍼 파라미터다.</p>
<p>GCNII와 APPNP/GDC의 차이점은 1) 우리 모델의 계수 벡터 세타가 입력 기능과 레이블에서 학습되고, 2) 각 계층에 ReLU 연산을 부과한다는 것이다</p>
<p>그래프 클러스터링을 기반으로 미니배치</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] AdapterFusion:
Non-Destructive Task Composition for Transfer Learning]]></title>
            <link>https://velog.io/@cho_se_ny/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-%EC%9E%91%EC%84%B1-%EC%A4%91-AdapterFusionNon-Destructive-Task-Composition-for-Transfer-Learning</link>
            <guid>https://velog.io/@cho_se_ny/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-%EC%9E%91%EC%84%B1-%EC%A4%91-AdapterFusionNon-Destructive-Task-Composition-for-Transfer-Learning</guid>
            <pubDate>Fri, 04 Nov 2022 08:16:44 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/pdf/2005.00247.pdf">https://arxiv.org/pdf/2005.00247.pdf</a>?</p>
<p>기존에는 Sequential fine-tuning과 multi-task learning 을 사용했다. 
그러나 catastrophic forgetting과 새로운 task를 추가하기 어렵다.</p>
<pre><code>Sequential fine-tuning - 여러 task를 순차적으로 학습하는 방식

Multi-Task learning - 학습시마다 모든 task의 data에 접근해 동시에 학습 수행. 
새로운 task를 추가하기 어려움</code></pre><pre><code>catastrophic forgetting - 파괴적 망각 / 단일 과제 (single task) 에 대해서는 뛰어난 성능을 보이지만, 다른 종류의 task를 학습하면 이전에 학습했던 task에 성능 저하. 이전 dataset과 새로운 학습 dataset 사이에 연관성이 있어도 이전 dataset에 대한 정보를 대량 손실.</code></pre><p>본 논문은 기존의 문제점을 해결한 two stage learning algorithm인 AdapterFusion을 제안한다.</p>
<ol>
<li>지식 추출 단계에서 stage 별 정보를 캡슐화하여 stage 별 parameter를 학습한다.</li>
</ol>
<p>-&gt; Adapter</p>
<ol start="2">
<li>지식 구성 단계에서 adpter를 결합한다.</li>
</ol>
<p>-&gt; 추출과 구성을 분리함으로써 여러 task를 학습할 수 있다.</p>
<p>기존의 방식들은 pretrain -&gt; finetuning으로 학습을 진행했다. 
그래서 특정 task에 finetuning된 모델을 재사용하기 위해서는 parameter 전체를 공유해야 한다. </p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/a968653b-ffe7-4c6e-8db8-843eb0e223fd/image.png" alt=""></p>
<p>AapterFusion architecture</p>
<p>Adaper는 finetuning 단계에서 전체 parameter를 학습 하지 않는다.
transformer layer 사이에 adapter layer를 일정 layer 개수마다 1개씩 배치하고 finetuning 단계에서 adapter layer만 학습한다. </p>
<p>전체 parameter에 비해 adapter parameter는 적어서 빠르게 학습 가능하며, adapter만 재사용해도 되기에 공유하기 용이하다. 용량 차지도 적다. 
기존의 방법과 비교했을때 비슷하거나 소폭 하락한 성능을 보여준다. 
-&gt; parameter가 적어졌음에도 성능은 괜찮다. </p>
<p>AdapterFusion은 다수의 task를 공유하기 위해 two-stage learnig algorithm을 도입한 새로운 architecture을 제안한다. 
첫 stage에서 학습한 adapter를 adapterfusion을 이용하여 결합해 최종 결과를 출력한다.</p>
<p>adapter는 하나의 task로만 학습된 single-task adapter와 다수의 task를 동시에 학습시킨 multi-task adapter를 모두 사용한다. </p>
<pre><code>parameter
매개변수, 모델 내부에서 결정되는 변수 -&gt; 그 값은 데이타로부터 결정됨
ex) 정규분포를 그리면 평균과 표준편차가 구해진다. 평균과 표준편차가 파라미터임.

hyper parameter
모델링할 때 사용자가 직접 세팅해주는 값</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[머신러닝] 결정 트리(Decision Tree)]]></title>
            <link>https://velog.io/@cho_se_ny/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B2%B0%EC%A0%95-%ED%8A%B8%EB%A6%ACDecision-Tree</link>
            <guid>https://velog.io/@cho_se_ny/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B2%B0%EC%A0%95-%ED%8A%B8%EB%A6%ACDecision-Tree</guid>
            <pubDate>Mon, 31 Oct 2022 07:49:47 GMT</pubDate>
            <description><![CDATA[<p>Python Machine Learning 책으로 공부했음을 밝힙니다.</p>
<p>결정 트리는 분류(classification)와 회귀(regression)가 가능한 지도 학습 모델이다.</p>
<p>스무고개처럼 예/아니오 질문을 하며 학습한다.
<img src="https://velog.velcdn.com/images/cho_se_ny/post/edcf240b-c523-4527-825a-827d720dba53/image.png" alt=""></p>
<p>훈련 데이터에 있는 특성을 기반으로 샘플의 클래스 레이블을 추정할 수 있는 일련의 질문을 학습한다.</p>
<p>트리의 루트(root)에서 시작해서 정보 이득(imformation Gain, IG)이 최대가 되는 특성으로 데이터를 나눈다. </p>
<p>반복되는 과정을 통해 리프 노드(leaf node)가 순수해질 때까지 모든 지식 노드에서 이 분할 작업을 반복한다. 즉, 각 노드의 모든 훈련 샘플은 동일한 클래스에 속한다.
실제로 이렇게 하면 노드가 많은 깊은 트리가 만들어지고 과대적합될 가능성이 높다. 일반적으로 트리의 최대 깊이를 제한하여 트리를 가지치기(pruning)한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Deep learning book] Chap.12 Applications]]></title>
            <link>https://velog.io/@cho_se_ny/Deep-learning-book-Chap.12-Applications</link>
            <guid>https://velog.io/@cho_se_ny/Deep-learning-book-Chap.12-Applications</guid>
            <pubDate>Fri, 28 Oct 2022 02:52:37 GMT</pubDate>
            <description><![CDATA[<h4 id="121-large-scale-deep-learning">12.1 Large-Scale Deep Learning</h4>
<p>신경망의 정확도와 복잡도를 개선하는데 있어 핵심적인 요인 중 하나는 신경망의 크기다.
고성능 하드웨어와 소프트웨어 기반구조가 필요하다.
12.1.1 
12.1.2
그래픽 카드는 다수의 3차원 정점좌표들에 대해 행렬 곱셈과 나눗셈 연산을 수행함과 동시에, 2차원 화면 좌표로 변환하는 작업도 병렬로 수행.
각 픽셀에 대해 여러 연산을 적용해서 픽셀의 값을 결정하는 연산도 병렬 수행.</p>
<p>cpu와 gpu에 대해 설명해준다</p>
<p>12.1.3
컴퓨터 한 대의 계산 자원으로는 큰 신경망을 실행하기에 부족할 때가 있다.
해결책은, 여러 대의 컴퓨터로 분산하는 것이다.
inference의 분산
각 입력 견본을 각자 다른 컴퓨터로 처리하기 -&gt; 자료 병렬성(data parallelism)
하나의 자료점을 어려 대의 컴퓨타가 처리하기 -&gt; 모델 병렬성(model parallelism)</p>
<p>train
자료 병렬성
SGD(확률적 경사 하강법) 단계에서 미니배치의 크기 키우기 -&gt; 최적화가 선형에 못 미칠 때가 많음.
여러 컴퓨터가 여러 경사 하강 단계들을 병렬로 계산하는게 낫지만, 표준적인 경사 하강법은 순차적인 알고리즘임. 단계 t에서의 기울기는 단계 t-1에서 산출한 매개변수들의 함수이기 때문이다.</p>
<p>해결책 - 비동기 확률적 경사 하강법
비동기(asynchronous) 확률적 경사 하강법은 각 core는 잠금 없이 매개변수들을 읽어서 기울기를 계산 후 갱신한다. 일부 core가 다른 core의 결과를 덮어쓸 수 있음. 따라서 각 경사 하강 단계의 평균 개선량이 감소한다. 그러나 산출 속도가 증가하여 전체적인 학습이 빨라짐.</p>
<p>12.1.4
추론 비용을 줄이는 한 가지 핵심 전력은 모델 압축(model compression)
고비용 모형을 더 작은, 저장 비용과 평가 비용이 낮은 모델로 대체한다.
주로 과대적합을 피하려고 크기를 키운 모델에 적용할 수 있다. </p>
<p>12.1.5
자료 처리 시스템의 속도를 높이는 전략 하나, 하나의 입력을 처리하는데 필요한 계산을 서술하는 계산 그래프에 동적 구조(dynamic struture)가 존재하는 시스템을 구축하는 것</p>
<p>개별 신경망에서 입력에 있는 특정 정보를 계산하는데 알맞는 부분(은닉 단위들의 부분집합)을 동적으로 결정할 수 있다.
이런 구조를 조건부 계산(conditional computation)이라고 부르기도 함.</p>
<p>게이터(gater)라고 부르는 신경망도 동적 구조를 가진 신경망의 예임.
전문가망(expert network)중 하나를 선택해서 현재 입력에 대한 출력을 계산한다.</p>
<p>동적 구조 시스템의 활용에서 주요 문제점들은, 시스템이 서로 다른 입력에 대해 서로 다른 코드 경로로 분기하다 보니 병렬성이 줄어든다.</p>
<p>12.1.6
심층망 전용 하드웨어 구현</p>
<h4 id="122-computer-vision">12.2 Computer Vision</h4>
<p>12.1
12.2 preprecessing 전처리
12.2.1.1 명암비 정규화
여러 컴퓨터 시각 과제들에서 안전하게 제거할 수 잇는 명백한 변동 요인은 이미지의 명암비이다.
이미지 전체 또는 한 영역의 픽셀들의 표준편차를 명암비로 간주함. 
전역 명암비 정규화(Global contrast normalization, GCN)는 다수의 이미지들의 명암비 변동을 줄이기 위해, 각 이미지에서 평균 명암비를 뺀 후 이미지 픽셀들의 표준편차가 어떤 축척 상수 s와 같아지도록 적절히 비례한다. 
문제점은 명암비가 0인 이미지(모든 픽셀이 같은 세기인 이미지)는 어떤 비례 계수를 사용해도 명암비를 변경할 수 없다.</p>
<p>구면화(sphering)
분산이 같아지도록 주성분들을 재비례하는 것이다.
백화(whitening)와 같은 연산이다.</p>
<p>국소 명암비 정규화(Local Contrast Normalization, LCN)
이미지 전체가 아니라 이미지의 작은 영역들에 대해 명암비를 정규화한다.
각 픽셀에서 인근 픽셀들의 평균을 빼고 인근 픽셀들의 표준편차로 나누는 것은 모든 방법에서 공통임. 구체적인 방법에 따라서는 픽셀을 중심을 한 직사각형 영역의 모든 픽셀의 평균과 표준편차를 그대로 사용하기도 하고, 가우스 가중치들을 이용한 가중 평균과 가중 표준편차를 사용하기도함. </p>
<p>국소표준편차들의 특징 맵들을 계산한 후 각 특징 맵에 대해 성분별 뺄셈과 성분별 나눗셈을 적용하는 식으로 효율적으로 구현할 수 있음.
미분 가능 연산으로, 입력 전처리 연산은 물론 신경망 은닉층의 비선형 함수로도 사용할 수 있다.</p>
<h4 id="123-speech-recognition">12.3 Speech Recognition</h4>
<p>음성 인식(speech recognition)
자동 음성 인식(automatic speech recognition ASR)
주어진 음향 정보 순차열 X에 대응되는 가장 그럴듯한 언어 정보 순차열 y를 계산하는 함수 f^<em>ASR를 학습하는 것을 목표로 함.
<img src="https://velog.velcdn.com/images/cho_se_ny/post/68cda119-5ade-41c5-8ac7-e2d2cc095450/image.png" alt="">
P^</em>는 입력 X를 목표 y와 연관시키는 진(true) 조건부 분포이다.</p>
<p>은닉 마르코프 모델(Hidden Markov Model, HMM)과 가우스 혼합 모델(Gaussian mixture model, GMM)</p>
<p>GMM은 음향 특징들과 음소들의 연관 관계를 모델화했고 HMM은 음소들의 순차열을 모델화했다.
HMM이 음소들과 이산적인 부분음소 상태들의 순차열을 산출, GMM은 각 이산적 기호들을 짧은 길이의 음향 파형 자료로 변환한다.</p>
<p>제한 볼츠만 기계(restricted Boltzmann machine, RBM)
무방향 확률적 모형을 훈련해서 입력 자료를 모델화하는 것에 기반을 둔 것이다.
비지도 사전 훈련(unsupervised pretraining)을 이용해서 하나의 심층 순방향 신경망을 구축하는데, 이때 신경망의 각 층을 각각 하나의 RBM의 훈련을 통해 초기화함. </p>
<p>이 신경망은 고정 크기 입력 구간안의 음향 스펙트럼 표현들을 입력받아서, 그 구간의 중심 프레임에 대한 HMM 상태들의 조건부 확률들을 예측한다.</p>
<h4 id="124-natural-language-processing">12.4 Natural Language Processing</h4>
<p>12.4.1 N-gram
n개의 토큰들로 이루어진 하나의 순차열
n번째 토큰의, 이전에 관측한 n-1개의 토큰들이 주어졌을때의 조건부 확률을 정의한다.</p>
<p>n=1인 모델을 유니그램(unigram), n=2는 바이그램(bigram), n=3은 트라이그램(trigram)</p>
<p>n-gram 과 n-1 gram 모델을 동시에 훈련하고 조건부 확률을 계산할 때 이미 계산해서 저장해 둔 두 확률을 조회해서 나누기만 하면 된다.
<img src="https://velog.velcdn.com/images/cho_se_ny/post/75063622-d93e-4a2f-8732-c0a8bf27aa47/image.png" alt="">
Pn의 추론을 정확하게 재현하려면, Pn-1을 훈련할 때 각 순차열에서 반드시 마지막 요소를 생력해야 한다. </p>
<p>한계는 훈련 집합의 단어 도수로 추정한 Pn이 0이 될 가능성이 크다. Pn-1이 0이면 확률이 정의되지 않아서 산출하지 못한다.
평활화(smoothing)를 사용한다. -&gt; 관측된 튜플들에서 관측되지 않은, 관측된 것들과 비슷한 튜플로 확률질량이 이동함.</p>
<h4 id="125-other-applications">12.5 Other Applications</h4>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Deep learning book] Chap.13  Linear Factor Models ]]></title>
            <link>https://velog.io/@cho_se_ny/Deep-learning-book-Chap.13-Linear-Factor-Models</link>
            <guid>https://velog.io/@cho_se_ny/Deep-learning-book-Chap.13-Linear-Factor-Models</guid>
            <pubDate>Fri, 28 Oct 2022 02:48:12 GMT</pubDate>
            <description><![CDATA[<p> <a href="https://www.deeplearningbook.org/contents/linear_factors.html">https://www.deeplearningbook.org/contents/linear_factors.html</a></p>
<p> Linear Factor Models - 선형 인자 모형</p>
<p> 인자(factor) - 관측되지 않는 변수, 잠재 변수(latent variable)
 잠재 변수가 있는 가장 단순한 확률 모델에 해당하는 선형 인자 모델을 소개한다. 
 심층 모델을 확장한 형태 생성 모델(generative model)을 구축하는데 필요한 접근 방식을 보여준다. </p>
<p> 선형 인자 모델의 특징은 h(잠재 변수)의 선형 변환에 노이즈를 더함으로 x를 생성하는 확률적 선형 디코더(stochastic linear decoder) 함수를 활용한다.
 결합분포를 가진 설명 인자(explanatory factor)들을 발견할 수 있다. -&gt; 선형 디코더를 사용하기에 다루기가 쉽다.</p>
<p> <img src="https://velog.velcdn.com/images/cho_se_ny/post/49688f66-6273-4926-a6df-8f98b36ae9fd/image.png" alt="">
 <img src="https://velog.velcdn.com/images/cho_se_ny/post/51fc52d4-f904-4894-adee-e9073904d067/image.png" alt="">
p(h)는 인수곱 분포(factorial distribution)으로 표본을 추출하기 쉽다. 주어진 인자를 기초해서 실수값 관측 가능 변수를 추출한다.</p>
<p>h의 선형변화에 bias와 noise를 더함으로써 x를 생성하며 noise는 차원들에 대해 독립이다.(Gaussian and diagonal)
 <img src="https://velog.velcdn.com/images/cho_se_ny/post/1a1fa5f1-a32c-4bd5-b249-6fb863ca962b/image.png" alt=""></p>
<p>선형 인자 모델의 구조
<img src="https://velog.velcdn.com/images/cho_se_ny/post/714fd2f7-5569-4057-a10d-a5c10e89c592/image.png" alt=""></p>
<h4 id="131-probabilistic-pca-and-factor-analysis">13.1 Probabilistic PCA and Factor Analysis</h4>
<p> PCA(주성분 분석)</p>
<p> <img src="https://velog.velcdn.com/images/cho_se_ny/post/d1b18136-e45f-4178-b79f-f3aec351d10e/image.png" alt="">
 가우스 분포</p>
<p> 인자분석에서 관측변수(observed variable) xi들이 h가 주어졌을 때 조건부 독립(conditionally independent)이라고 가정한다.
 인자분석에서는 noise를 공분산 행렬이 <img src="https://velog.velcdn.com/images/cho_se_ny/post/3b7f4e5f-e9e1-447b-bd10-e89d2373c38a/image.png" alt="">
인 대각 공분산 가우스 분포에서 얻는다. </p>
<p>σ^2 = [σ^2 1, σ^2 2, ....,σ^2 n]^T는 변수별 분산들을 담은 벡터이다.
서로 다른 관측변수 xi들 사이의 의존성을 포착하는 것이다. </p>
<p>확률론의 틀에서 PCA를 하려면 조건분 분산들을 모두 같게 만들어야 한다. σ^2은 하나의 스칼라이다.
 <img src="https://velog.velcdn.com/images/cho_se_ny/post/31b55a37-da13-4eb7-94fd-c147c32bb402/image.png" alt="">
위와같이 공분산이 바뀐다.
<img src="https://velog.velcdn.com/images/cho_se_ny/post/21050365-4959-4894-8d7a-3d7fd9c68c99/image.png" alt="">
이와같이 나타낼 수 도 있다.</p>
<p>반복적인 EM 알고리즘을 사용해서 W와 σ^2을 추정할 수 있다.</p>
<p>대부분의 변동을 어떤 작은 잔차(residual) 재구축 오차(reconstruction error)까지는 잠재변수 h로 찾을 수 있다.</p>
<p>모든 주성분들은 직교한다.</p>
<h4 id="132-independent-component-analysis-ica">13.2 Independent Component Analysis (ICA)</h4>
<p> ICA(독립 성분 분석)은 가장 오래된 표현 학습 알고리즘
 선형 인자들을 모형화하기 위한 접근 방식의 하나인 독립 성분 분석은 관측된 신호를 여러 바탕(underlying) 신호들로 분리하고, 그 바탕 신호들을 비례하고 더해서 관츤 자료를 만든다.
 신호들은 상관관계가 없으며 서로 완전히 독립이라고 가정한다.</p>
<p>ICA는 매개변수적(fully parametirc) 생성 모델을 훈련한다. 바탕 인자들에 관란 사전 분포 p(h)를 미리 지정해야한다. </p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/ef4eb37e-586f-4c7e-bb56-b49e26bddf94/image.png" alt=""></p>
<p>주어진 사전분포에 기초해서 위와 같이 생성한다.</p>
<p>변수들을 비선형적으로 변화해서 p(x)를 구할 수 있다. 그 후 최대가능도를 이용해서 학습시킨다.</p>
<p>IC의 많은 변형이 가능하다. 일부는 결정론적 디코더를 사용하는 대신 x를 생성해서 noise를 추가한다. 대부분은 최대가능도 기준을 사용하지 않고 h = W^−1 x의 성분들이 서로 독립시키는 것을 목표로 한다. 
<img src="https://velog.velcdn.com/images/cho_se_ny/post/c660d644-1c0b-4083-9ce8-6424f8033608/image.png" alt="">
W의 행렬식을 취해야하는데, 행렬식 계산은 수치적으로 불안정해질 수 있다. ICA의 일부 변형은 W를 직교행렬함으로써 문제 연산을 피한다.</p>
<p>ICA의 모든 변형에서 공통점은, p(h)가 반드시 비 가우스 분포여야한다. 가우스 분포라면 W의 식별이 불가능해진다. -&gt; 서로 다른 여러 W 값들이 p(x)에 관한 동일한 분포에 대응한다.</p>
<p>사용자가 분포를 지정해야 하는 최대가능도 접근 방식에서는 
<img src="https://velog.velcdn.com/images/cho_se_ny/post/250d7503-bb45-46d3-bac4-145c9a77e224/image.png" alt="">
를 사용한다</p>
<p>비 가우스 분포는 가우스 분포에 비해 0 부근에서 peak이 더 높다.</p>
<p>대부분의 ICA 구현들이 희소 표현의 학습을 목적으로 하기 때문이다.</p>
<h4 id="133-slow-feature-analysis">13.3 Slow Feature Analysis</h4>
<p> SFA는 시간 신호들에 있는 정보를 이용해서 불변 특징들을 학습하는 선형 인자 모델
 느린 특징 분석은 느림 원리라고 부르는 일반 원리에 기초한다.
 장면의 중요한 특징들은 그 장면의 서술을 구성하는 개별 측도들에 비해 느리게 변한다는 것이다.</p>
<p> 느림 원리를 모형에 적용하는 방법은, 비용함수에 다음과 같은 형태의 항을 하나 추가하면 된다.
 <img src="https://velog.velcdn.com/images/cho_se_ny/post/94a27343-a1a8-404a-bcfd-a91b634f9649/image.png" alt="">
λ는 느림 정칙화 항의 강도를 결정하는 초매개변수, t는 시간순 견본 순차열의 특정 견본을 지칭하는 시간 색인, f는 정칙화할 특징 추출기(feature extractor), L은 f(x^(t),f(x^(t+1))의 거리를 측정하는 손실함수이다. L로는 흔히 평귭제곱오차를 사용한다.</p>
<p>선형 특징 추출기에 적용하면 효율성이 생긴다. 그래서 닫힌 형태로 훈련될 수 있다.</p>
<p>ICA의 일부 변형들처럼 SFA가 그 자체로 생성 모델은 아니다. 
SFA가 입력 공간에서 특징 공간으로의 선형 사상을 정의하지만 특징 공간에 관한 사전분포를 정의하지 않아 입력 공간에 대해 분포 p(x)를 강제하지 않음으로 생성 모델이라고 하기 힘들다.</p>
<p>SFA 알고리즘은 f (x;θ)를 하나의 선형 변환으로 정의하여 최적화 문제를 푼다.
<img src="https://velog.velcdn.com/images/cho_se_ny/post/5f6dd5f5-5763-4847-a371-8eb3fccacdf1/image.png" alt="">
단, 조건을 충족해야 한다.</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/4f59b900-6221-41b0-98a9-2c10edef03c1/image.png" alt="">
유일한 해를 가지려면 학습된 특징의 평균이 0이어야 한다는 조건이 필요하다. 그렇지 않으면 모든 특징 값에 하나의 상수를 더해서 또 다른 해를 얻을 수 있다. 
특징들은 분산이 1이어야 한다는 조건은 모든 특징이 0으로 축약되는 문제를 방지하기 위한 것이다.</p>
<p>PCA처럼 SFA의 특정에는 순서가 있다. </p>
<ol>
<li>가장 느리게 변하는 특징</li>
<li>여러 개의 특징을 학습하려면 조건을 추가해야한다.
<img src="https://velog.velcdn.com/images/cho_se_ny/post/c606a726-1196-42e1-8a75-18c02795e0ff/image.png" alt="">
즉, 학습된 특징들은 반드시 서로 선형 무상관이어야 한다. 
이런 조건이 없으면 모든 학습된 특징이 가장 느린 신호 하나만 포착하는 결과가 빚어질 수 있다</li>
</ol>
<p>SFA는 x에 비선형 기저 확장(basis expansion)을 적용한 후 SFA를 적용해서 비선형 특징들을 학습하는 형태로 쓰인다.
x를 이차 기저(모든 i와 j에 대한 성분 xixj들로 이루어진 벡터)로 확장한다.
-&gt; 적절히 조합해서 심층 비선형 느린 특징 추출기를 학습할 수 있다.</p>
<p>장점은 배울 특징들을 예측하는 것이 이론적으로 가능, 심지어 심층 비선형 환경에서도 가능하다.
바탕 인자들의 실제 변화 방식에 관한 지식이 있다면, 인자들을 표현하는 최적의 함수를 해석적으로 푸는 것이 가능하다.</p>
<p>단점은 다른 학습 알고리즘들은 비용함수가 구체적인 특정 픽셀 값에 크게 의존하기 때문에 모델이 어떤 특징을 배울지 예측하기가 어렵다.</p>
<h4 id="134-sparse-coding">13.4 Sparse Coding</h4>
<p> 비지도 특징 학습과 특징 추출 메커니즘으로서 자세히 연구된 선형 인자 모델
 엄밀하게 말하면 모델에서 h의 값을 추론하는 과정에만 해당함.</p>
<p> 다른 선형 인자 모델들처럼 희소 부호화 모형은 하나의 선형 디코더에 x의 재구축을 위한 noise를 더한 것이다. -&gt; 가우스 noise를 사용하는 가정인데, β는 등장 정밀도(isotropic precision)이다.
 <img src="https://velog.velcdn.com/images/cho_se_ny/post/d57a178f-0a7a-4e6e-bee1-632bc5970c4c/image.png" alt="">
분포 p(h)로는 0 부근에서 봉우리가 날카로운 분포를 선택한다. 인수분해된(factorized) 라플라스 분포나 코시(Cauchy) 분포, 인수분해된 스튜던트(Student) t 분포 등이 있다.</p>
<p>라플라스 사전분포
<img src="https://velog.velcdn.com/images/cho_se_ny/post/47ea891b-572d-45ff-b153-38d72085be8b/image.png" alt=""></p>
<p>스튜던트 t 사전분포
<img src="https://velog.velcdn.com/images/cho_se_ny/post/6da4322b-3d8b-4895-b17a-4b706e893d4d/image.png" alt=""></p>
<p>희소 부호화를 최대가능도로 훈련하는 것은 처리 불가능한 문제다. 대신, 자료의 부호화와 디코더의 훈련을 번갈아 한다면 주어진 부호화에 대해 자료를 잘 재구축할 수 있다.</p>
<p>PCA 모델은 가중치 행렬의 곱셈으로만 이루어진 매개변수적 인코더(parametric encoder) 함수를 이용해서 h를 예측한다. 그러나 희소 부호화에서는 매개변수적 인코더를 사용하지 않는다.</p>
<p>희소 부호화에 쓰이는 인코더는 일종의 최적화 알고리즘으로, 가능성이 가장 큰 하나의 부호 값을 구하는 최적화 문제를 푸는 역할을 한다.
<img src="https://velog.velcdn.com/images/cho_se_ny/post/00ce9a28-8358-4428-a79a-ccb8a12507ad/image.png" alt=""></p>
<p>(a)
<img src="https://velog.velcdn.com/images/cho_se_ny/post/6d128224-7cd8-4b68-aa73-1f4b9a163cf2/image.png" alt="">
(b)
<img src="https://velog.velcdn.com/images/cho_se_ny/post/41a37e6e-26b7-48cd-be34-373beff940bd/image.png" alt="">
a와 b 식을 결합하면 다음 그림과 같은 최적화 문제가 나온다.</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/930da707-2bcc-4bc0-96c6-cee8cd411f6a/image.png" alt="">
h에 의존하지 않으면 양의 비례 인수들로 나누어지는 항들은 생략되었다.
h에 가해진 L^1 norm 조건으로 희소한 h^*를 산출한다.</p>
<p>모델을 훈련하기 위해서는 h에 대한 최소화와 W에 대한 최소화를 번갈아 수행해야 한다.
이 경우 β를 하나의 초매개변수로 취급한다. </p>
<p>보통 매개변수를 1로 두는데, 최적화 문제에서 매개변수의 역할이 λ의 역할과 겹쳐 둘 다 초매개변수로 둘 필요가 없기 때문이다.</p>
<p>아까 말했던 h에 의존하지 않는 항들은 β에는 의존한다. β를 학습하려면 생략된 항들도 포함되어야하는데 그렇지 않으면 β가 0으로 축약된다.</p>
<p>희소 부호화에 대한 접근 방식 중에서 p(h), p(x|h)를 명시적으로 구축하지 않는 것들도 있다.
추론 절차를 이용해서 추출했을 때 활성화 값이 0이 되는 경우가 많은 특징들의 사전(dictionary)을 학습하는 것이 주된 목표일 때도 많다.</p>
<p>h를 라플라스 사전분포에서 추출한다면, h의 한 성분이 실제로 0이 되는 사건의 확률은 0이다.</p>
<p>희소 부호화 접근 방식을 비매개변수적 인코더와 조합하면 재구축 오차와 로그 사전분포의 조합을 다른 매개변수적 인코더보다 잘 최소화한다. 그리고 인코더에 일반화 오차가 없다.</p>
<p>매개변수적 인코더는 일반화가 잘 되는 방식으로 x를 h로 사상하는 방법을 배운다.
훈련 데이터와 유사성이 없는 비정상적인 x의 경우에는 적절한 h를 찾지못할 수도 있다.</p>
<p>볼록함수에 해당하는 대부분의 희소 부호화 모델 공식화들에서는 최적화 절차가 항상 최적의 부호를 찾아낸다.(복제된 가중치 벡터들이 발생하는 퇴화 경우를 제외할 때)</p>
<p>유사성이 낮은 데이터는 희소성과 재구축 비용이 높아지지만, 인코더 가중치들의 일반화 오차지 인코더의 알반화 오차가 아니다.</p>
<p>희소 부호화의 최적화 기반 부호화 과정에 일반화 오차가 없음으로 부호 예측을 위한 매개변수적 함수로 사용할 때보다 분류기를 위한 특징 추출기로 사용할 때 일반화가 더 잘된다.</p>
<p>선형 S자 오토인코더(linear-sigmoid autoencoder)의 특징들보다 잘 일반화된다. </p>
<p>비매개변수적 인코더의 단점은 x가 주어졌을 때 h를 계싼하는데 시간이 더 많이 걸린다.
반복적 알고리즘을 돌려야 하기 때문이다.</p>
<p>반면, 매개변수적 오토인코더는 고정된 개수의 층들만 사용한다.(하나의 층을 사용할 때가 많다)
단점은 비매개변수적 인코더에 대해 역전파를 수행하기에 간단하지 않다. 그래서 비지도 학습 판정기준을 이용해서 희소 부호화 모델을 미리 훈련한 후 지도학습 판정기준을 이용해서 모델을 세밀하게 조정하는 기법을 적용하기 어렵다. </p>
<p>미분들을 근사할 수 있도록 수정한 희소 부호화 변형들도 있지만, 별로 안쓴다.</p>
<p>종종 다른 선형 인자 모델처럼 질 나쁜 표본들을 산출한다.
모델이 개별 특징을 잘 배운다고해도, 은닉 부호에 대한 인수곱 사전분포 때문에 모델이 생성한 표본에 모든 특징 중 일부 특징들이 무작위로 포함되기 때문이다.
이런 문제점은 가장 깊은 부호층에 비인수곱(nonfactorial) 분포를 강제할 수 있는 더 깇은 모델을 개발하는 동기가 되었으며, 얕은 모델들은 좀 더 정교하게 만드는 동기가 되었다.</p>
<h4 id="135-manifold-interpretation-of-pca">13.5 Manifold Interpretation of PCA</h4>
<p> PCA와 인자분석을 비롯한 선형 인자 모델이 하는 일을, 하나의 다양체(manifold)를 학습하는 것이라고 해석할 수 있음.</p>
<p> 확률적 PCA는 확률이 높은 점들로 이루어진 얇은 팬케이크 모양의 영역을 정의한다. 
 영역은 곧 일부 축들을 따라 아주 좁게 펼쳐진 가우스 분포에 해당한다.
 두꼐(수직축)는 얇지만 넓게(수평축) 퍼져 있는 팬케이크.
 <img src="https://velog.velcdn.com/images/cho_se_ny/post/ba71284a-fd7a-463f-8345-e55df0574b8c/image.png" alt="">
PCA는 고차원 공간에서 팬케이크를 하나의 선형 다양체에 맞게 방향을 정렬하는 것이라 할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/4af09005-b5c4-4aaa-9061-533e0e766b4b/image.png" alt="">
인코더는 위와 같이 정의된다.</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/00b36585-7cc2-447a-9390-f0d8532fa63c/image.png" alt="">
h의 저차원 표현을 계산한다. 오토인코더의 관점에서, 디코더는 위와 같인 x를 재구축한다.</p>
<p>재구축 오차를 최소화하는 선형 인코더와 디코더를 선택
<img src="https://velog.velcdn.com/images/cho_se_ny/post/ce683a78-eded-4b52-93d9-3e7c8f87c0e0/image.png" alt="">
하는 것은 V = W, μ = b = E[x]로 두는 것에 해당하며, W의 열들은 하나의 정규직교 기저를 형성한다. 그 기저는 공분산행렬의 주 고유벡터들과 동인한 부분공간을 차지한다. 
<img src="https://velog.velcdn.com/images/cho_se_ny/post/ece87ece-2100-4f83-a05c-57922e2961e0/image.png" alt=""></p>
<p>PCA의 경우 W의 열들은 고유벡터들을 해당 고윳값의 크기순으로 정렬한 것이다. (고윳값은 모두 음이 아닌 실수)
또한, C의 고윳값 λi가 고유벡터 v^(i) 방향으로의 x의 분산에 해당하는 점도 증명할 수 있다. </p>
<p>x ∈ R^D이고 d &lt; Dd에 대해 h ∈ R^d일 때, 최적의 재구축 오차는 
<img src="https://velog.velcdn.com/images/cho_se_ny/post/8369aff5-b11b-454d-a4a6-d33488004c89/image.png" alt="">
이다.(μ, b, V, W를 앞에서처럼 선택한 경우)</p>
<p>공분산의 계수(rank)가 d이면 λd+1에서 λD까지의 고윳값들은 0이고 재구축 오차는 0이다.</p>
<p>앞의 해를 재구축 오차를 최소화하는 것이 아니라 직교 W하에서 h의 성분들의 분산들을 최대화해서 구할 수 있다.</p>
<pre><code> 생성모델(generative model)
 주어진 학습 데이터를 학습하여 학습 데이터의 분포를 따르는 유사한 데이터를 생성하는 모델이다. 가장 중요한 것은 학습 데이터의 분포를 학습하는 것이 가장 중요하다. 학습 데이터의 분포와의 차이가 적을수록 실제 데이터와 비슷한 데이터를 생성할 수 있다.</code></pre><pre><code> 디코더(decoder)
 해석기라는 의미로 컴퓨터에게 어떠한 명령을 처리하는데 사용됨.
 명령어에 대한 구분을 위해 사용되는 것이 디코더
 n개의 입력 변수에 대해 n개의 변수로 구성된 2^n개의 최소항을 생성함.</code></pre><pre><code>공분산 행렬(Covariance matrix)
공분산이란 둘 이상의 변량(variance)이 연관성을 가지며 분포하는 모양을 전체적으로 나타낸 분산이다.</code></pre><p><img src="https://velog.velcdn.com/images/cho_se_ny/post/1e165ed9-1333-4d3a-bbda-b0228fd5d15f/image.png" alt=""></p>
<pre><code>
(Var[X1])은 x들이 평균을 중심으로 얼마나 흩어져 있는지를 나타내고,X1와 X2의 공분산(Cov[X1,X2])은 X1,X2의 흩어진 정도가 얼마나 서로 상관관계를 가지고 흩어졌는지를 나타낸다.
이때 Cov[X1,X2]와 Cov[X2,X1]는 동일하기 때문에 대각선 성분을 중심으로 대칭이 되게 된다.

각 요소들의 퍼져있음이 얼마나 유사하냐(요소의 변동이 얼마나 닮았냐), 요소들간의 내적을 통해 요소의 변동이 얼마나 닮았는지 알 수 있다.

데이터를 어떻게 linear transform하고 있는가, 행령은 linear transform을 통해 다른 벡터 공간으로 mapping해주는 기능을 가진다.
공분산 행렬의 초기 상태(데이터가 서로 관련이 없는 상태)에서 서로의 연관선에 대한 정보가 있는 공분산 행렬을 통해 각 데이터를 분산시켜 준다고 볼 수 있다.</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[머신러닝] 선형회귀 (Linear Regression)]]></title>
            <link>https://velog.io/@cho_se_ny/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80-Linear-Regression</link>
            <guid>https://velog.io/@cho_se_ny/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80-Linear-Regression</guid>
            <pubDate>Fri, 28 Oct 2022 02:23:07 GMT</pubDate>
            <description><![CDATA[<p>넘파이로 선형회귀 구현하기</p>
<pre><code>import numpy as np
import matplotlib.pyplot as plt

&quot;&quot;&quot;
선형 회귀 Y = a * X + b

weight 와 bias 를 조절해가며 학습 데이터와 자신의 예측 데이터 간의 오차를 줄이는 작업
-&gt; &quot;학습&quot; , 경사 하강법을 사용하여 진행함.
&quot;&quot;&quot;

&quot;&quot;&quot;
학습 데이터
문제 : x 

정답 : y
&quot;&quot;&quot;
x = np.array([[8.70153760], [3.90825773], [1.89362433], [3.28730045],
[7.39333004], [2.98984649], [2.25757240], [9.84450732], [9.94589513], [5.48321616]])

y = np.array([[5.64413093], [3.75876583], [3.87233310], [4.40990425],
[6.43845020], [4.02827829], [2.26105955], [7.15768995], [6.29097441], [5.19692852]])

&quot;&quot;&quot;
경사하강법 과정
1. a = 0, b = 0 
-&gt; 가중치를 0혹은 무작위로 초기화

2. Y - (a * X + b) 
-&gt; 예측 값과 실제 값 사이의 차이 ( error ) 를 도출

3. 해당 에러를 경사하강법을 구하는 수식에 대입하여 각 가중치의 변화값(delta)를 보내줌.
-&gt; loss function 을 미분시켜 그래프의 최소 값을 뜻하는 극소값을 찾는 과정
&quot;&quot;&quot;

# 학습률 결정 learning_rate
# 얼만큼 반복 n_iter

class LinearRegression:

    def __init__(self, x,y, learning_rate = 0.01, n_iter = 300):
        self.x = x
        self.y = y
        self.lr = learning_rate
        self.n_iter = n_iter

    #현재 가중치로 테스트 데이터 예측
    def prediction(self):
        self.equation = self.x*self.a + self.b
        return self.equation

    #오차 값을 통해 가중치 갱신
    def update_ab(self):
        #a를 업데이트하는 규칙을 만듬.
        self.delta_a = -(self.lr*(2/len(self.error))*(np.dot(self.x.T, self.error)))

        #b를 업데이트하는 규칙을 만듬
        self.delta_b = -(self.lr*(2/len(self.error))*np.sum(self.error))

        return self.delta_a, self.delta_b

    #경사하강법을 통한 가장 적합한 가중치 도출
    def gradient_descent(self):
        self.a = np.zeros((1,1))
        self.b = np.zeros((1,1))

        for i in range(self.n_iter):
            self.error = self.y - self.prediction()
            self.a_delta, self.b_delta = self.update_ab()
            self.a -= self.a_delta
            self.b -= self.b_delta


        return self.a, self.b

    #그래프 시각화 함수
    def plotting_graph(self):
        self.a ,self.b = self.gradient_descent()
        self.y_pred = self.a[0,0]*self.x*+self.b
        plt.scatter(self.x, self.y)
        plt.plot(self.x, self.y_pred)
        plt.savefig(&quot;new.png&quot;)

seny=LinearRegression(x,y)
seny.plotting_graph()</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] Incorporating Literals into Knowledge Graph Embeddings]]></title>
            <link>https://velog.io/@cho_se_ny/%EB%85%BC%EB%AC%B8-%EA%B3%B5%EB%B6%80-%EC%9E%91%EC%84%B1-%EC%A4%91-Incorporating-Literals-into-Knowledge-Graph-Embeddings</link>
            <guid>https://velog.io/@cho_se_ny/%EB%85%BC%EB%AC%B8-%EA%B3%B5%EB%B6%80-%EC%9E%91%EC%84%B1-%EC%A4%91-Incorporating-Literals-into-Knowledge-Graph-Embeddings</guid>
            <pubDate>Wed, 26 Oct 2022 08:51:57 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>공부 목적으로 작성한 것임으로, 오류가 존재할 수 있다는 점을 말씀드리고 싶습니다</p>
</blockquote>
<p><a href="https://arxiv.org/pdf/1802.00934.pdf">https://arxiv.org/pdf/1802.00934.pdf</a></p>
<h3 id="abstract">Abstract</h3>
<p>KG(Knowledge Graph)는 엔티티(entity), 관계(relation)으로 구성된다. 
하지만 본 논문에서는 엔티티, 관계 그리고 <strong>리터럴(lieral)</strong> 노드로 구성된다
리터럴 노드는 엔티티의 attribute로 엔티티간의 관계만으로 나타낼 수 없는 정보를 인코딩한다.
관계 예측을 위해서 리터럴을 포함한 모듈을 <strong>LiteralE</strong>라고 한다.
LiteralE는 학습 가능한 매개 변수화된 함수를 통해 리터럴 정보로 임베딩을 직접 강화한다.
기존의 score function에 쉽게 통합되며 end-to-end 방식으로 엔티티 임베딩과 함꼐 학습할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/9216f5cc-325f-4d5a-b8d6-a5ba1b83c754/image.png" alt="">
본 논문에서는 KG는 triple의 집합이다. triple은 관계를 통해 엔티티(원)나 리터럴(직사각형)을 다른 엔티티에 연결한다. 
첫번째 triple은 엔티티와 엔티티간의 관계를 나타내고 두번째는 엔티티와 리터럴간의 관계를 나타낸다.
위에 그림에서는 구조적인 정보(같은 학교)와 문자 그대로의 정보(생년)을 보여준다.
이러한 노드들 사이에서 관계를 예측의 정확성을 극대화시키기 위해서는 같은 학교이고 비슷한 나이여야지 서로 알 확률이 높은 경향이 있기에 결합되어야한다.
리터럴 정보로 엔티티 임베딩을 강화하는 LiteralE를 소개하겠다.
기존의 임베딩과 엔티티의 리터럴을 입력으로 얻은 임베딩으로 학습 가능한 매개 변수 함수를 사용하여 해당 리터럴을 통합한다. score function을 변경하지 않고 잠재 기능 모델에서 기존 임베딩을 대체할 수 있으며, 결과 시스템은 확률적 gradient descent나 다른 gradient 기반 알고리즘과 end-to-end방식으로 공동 훈련할 수 있다.
따라서 LiteralEsms 기존 방법과 보편적으로 결합할 수 있는 확장 모듈로 볼 수 있다.
추가 입력으로 이미지, 텍스트의 저차원 벡터 표현으로 직접 일반화될 수 있다.</p>
<p>링크 예측 함수
 <img src="https://velog.velcdn.com/images/cho_se_ny/post/5791ce82-85c4-4433-8492-9986e8abe8e0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/b8458f34-248c-4d92-9bbf-106db5d08727/image.png" alt="">
각각의 가능한 score 값을 매핑한다.
값이 클수록 참일 가능성이 높다.</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/745e11a4-a83e-47bc-8ef0-1117d3c7b205/image.png" alt="">
score function
<img src="https://velog.velcdn.com/images/cho_se_ny/post/4e2c5524-6f43-4a24-8e4f-e80125e701d8/image.png" alt="">
위의 함수를 밑처럼 대체하는 것을 제안한다.
<img src="https://velog.velcdn.com/images/cho_se_ny/post/a12673aa-e168-49c7-a193-85588216a6c2/image.png" alt="">
이전과 동일한 훈련 절차를 사용하여 gradient descent기반 최적화를 통해 훈련한다.</p>
<p>기본모델 (DistMult, Complex 및 ConvE)을 개선했다.</p>
<pre><code>end-to-end 
처음부터 끝까지라는 의미로, 입력부터 출력까지 &#39;파이프라인 네트워크&#39;없이 한 번에 처리한다는 뜻. 
파이프라인 네트워크 : 전체 네트워크르 이루는 부분적인 네트워크
한계 : 신경망에 너무 낳은 계층의 노드가 있거나, 메모리가 부족할 경우 사용할 수 없다,
문제가 복잡할 수록, &#39;전체 네트워크&#39;를 &#39;파이프라인 네트워크&#39;로 나눠서 해결하는 것이 더 효율적일 때도 있다.
데이터의 정보가 나눠진 각각의 파이프라인에 더 적합하게 사용될 수 있기 때문이다.</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Intro]]></title>
            <link>https://velog.io/@cho_se_ny/Intro</link>
            <guid>https://velog.io/@cho_se_ny/Intro</guid>
            <pubDate>Fri, 14 Oct 2022 04:42:42 GMT</pubDate>
            <description><![CDATA[<p>인공지능을 공부하고 있으며, 공부를 기록하는 용으로 시작합니다.
경제학과였지만 인공지능에 관심을 갖기 시작하여 공부를 시작하였으며 수학적인부분이나 다양한 부분에서 부족한 점이 있겠지만 열심히 공부하겠습니다.</p>
<p>저의 관심분야는 Knowledge Graph 이라 이 분야에 관련한 공부 글이 많이 올라올 수 있습니다.</p>
<p>대학원에 가려면 이제 2년도 안남았지만, 알찬 학부생을 보내겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] KGAT :  Knowledge Graph Attention Network for Recommendation]]></title>
            <link>https://velog.io/@cho_se_ny/%EB%85%BC%EB%AC%B8%EA%B3%B5%EB%B6%80-%EC%9E%91%EC%84%B1%EC%A4%91-KGAT-Knowledge-Graph-Attention-Network-for-Recommendation</link>
            <guid>https://velog.io/@cho_se_ny/%EB%85%BC%EB%AC%B8%EA%B3%B5%EB%B6%80-%EC%9E%91%EC%84%B1%EC%A4%91-KGAT-Knowledge-Graph-Attention-Network-for-Recommendation</guid>
            <pubDate>Fri, 14 Oct 2022 04:34:47 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>공부 목적으로 작성한 것임으로, 오류가 존재할 수 있다는 점을 말씀드리고 싶습니다</p>
</blockquote>
<p><a href="https://arxiv.org/pdf/1905.07854.pdf">https://arxiv.org/pdf/1905.07854.pdf</a></p>
<p>정확하고 다양한 추천을 위해서는 attribute(속성, 부가적인 정보)가 필수적이다.
본 논문에서는 attribute를 연결함으로써 KG(Knowledge Graph)의 유용성을 연구하며 하이브리드 구조, 하나 이상의 아이템에 연결된 KG는 필수 요소라고 주장하며 KGAT(Knowledge Graph Attention Network)를 제안한다.
KGAT는 고차원 end-to-end 방식으로 모델링하며 이웃 노드로부터 임베딩을 재귀적으로 전파하여 임베딩을 세분화하고, 이웃 노드의 중요성을 식별하기 위해 어텐션(attention) 메커니즘을 사용한다.</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/73abebef-cd14-4e38-8edb-6cd3c9df84bf/image.png" alt="">
u1 - 사용자, e1 - 배우, i1 - e1이 출연한 영화
u1, e1, i1 은 상호작용이 있다. CF(협업 필터링)은 i1, i1를 본 기록이 있는 u4, u5 사용자에 초점을 맞추고, SL(supervised learning, 지도 학습)은 e1, i2라는 attribute를 가진 아이템에 초점을 맞춘다.</p>
<p>두 가지 유형의 정보는 추천을 위해 상호 보완적이며 사용자와 아이템 간에 고차원 관계를 만든다.
하지만 기존의 방식은 노란색 원에 있는 같은 배우가 출연한 영화지만 다른 영화를 본 것과 회색 원에 있는 같은 배우가 출연한 영화를 고차원 연결성으로 고려하지 못한다.</p>
<p>이러한 한계를 해결하기 위해서, KG와 하이브리드 구조를 합쳐 협업 지식 그래프(CKG)를 사용한다. 위의 그림과 같이, 추천의 핵심은 CKG의 고차원 연결성을 활용해야한다. (고차원 연결성 - Ex) 장거리 연결) </p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/5af9dbd0-0239-4ac1-8cf3-b6e1efbab845/image.png" alt=""></p>
<p>노란색 원과 회색 원으로 가는 길이다.
고차원 정보를 활용하기 위해서는 사용자와 고차원 연결을 갖는 노드에 과적합되는 것과 고차원 연결은 불균등하게 기여함으로 안정적인 weight나 선택이 필요하다.</p>
<p>KG에 다소 노동 집약적일 수 있으며 명시적인 모델링이 없기에 고차원 연결이 포착되지 않는다는 보장도 없고 결과도 해석할 수 없다.</p>
<p>이런 기존의 한계를 고려해서, 본 논문은 KG의 고차원 정보를 효율적이며 명시적이고 end-to-end 방식으로 활용할 수 있는 모델을 개발해야한다고 생각했다.</p>
<p>고차원 연결의 문제를 해결하기 위해 두 가지 설계를 갖춘 지식 그래프 어텐션 네트워크(KGAT)를 제안한다.</p>
<p>1) 주변 노드의 임베딩을 기반으로 노트 임베딩을 업데이트하고 이런 임베딩을 고차원에 연결하여 반복적으로 수행한다.
2) Attention 기반으로 aggregation을 한다. 그러면 고차원에서 이웃 노드의 정보를 어느정도의 가중치로 가져올지를 정한다.</p>
<p>KGAT는 path 기반 방법보다 경로를 구체화해서 더 효율적이고 사용하기 편하다. 그리고 aggregation 기반 방법보다 고차원 연결을 직접 요인화함으로 파미미터를 최적화하기 유리하다.</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/ae8e7611-71bc-484b-a35f-00458bbe2228/image.png" alt="">
사용자 - 아이템  bipartite graph 를 위의 수식과 같이 나타내며</p>
<p><img src="https://velog.velcdn.com/images/cho_se_ny/post/8554bc8c-8fc0-4a23-9607-4bd3e5fa4402/image.png" alt="">
위와 같이 정의한다. U와 I는 사용자와 아이템 집합을 나타내며, Yui = 1 은 사용자 u와 아이템 i 사이에 상호 작용이 있음을 나타내며 그렇지 않으면 Yui = 0 이다.</p>
<pre><code>어텐션 (attention) 메커니즘
디코더에서 출력 단어를 예측하는 매 시점(time step)마다, 인코더에서의 전체 입력 문장을 다시 한 번 참고한다. 단, 전체 입력 문장을 전부 다 동일한 비율로 참고하는 것이 아니라, 해당 시점에서 예측해야할 단어와 연관이 있는 입력 단어 부분을 좀 더 집중(attention)해서 본다.</code></pre>]]></description>
        </item>
    </channel>
</rss>