<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>studying_cell.log</title>
        <link>https://velog.io/</link>
        <description>내가 보려고 기록해 둔 저장소</description>
        <lastBuildDate>Sun, 27 Aug 2023 13:43:49 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>studying_cell.log</title>
            <url>https://velog.velcdn.com/images/studying_cell/profile/67c7ad0e-8d53-42a2-9627-80be5d8d2176/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. studying_cell.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/studying_cell" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[GAN]]></title>
            <link>https://velog.io/@studying_cell/GAN</link>
            <guid>https://velog.io/@studying_cell/GAN</guid>
            <pubDate>Sun, 27 Aug 2023 13:43:49 GMT</pubDate>
            <description><![CDATA[<h2 id="gan">GAN</h2>
<p>Generator와 Discriminator가 서로 경쟁하며 데이터를 생성하는 모델</p>
<ul>
<li>위조지폐범*(G) vs 경찰(D)
<img src="https://velog.velcdn.com/images/studying_cell/post/7d80e279-ac7b-4362-9a9d-4a82fccb6984/image.png" alt="">
위조지폐범은 진짜같은 위조 지폐를 만들어서 경찰을 속이는 것이 목표 $\rightarrow$ 경찰은 위조지폐범이 만든 위조 지폐를 구별해내는 것이 목표 $\rightarrow$ 시간이 갈수록, 위조지폐범은 더욱 더 정교한 위조 지폐를 만들어낼 것이고, 경찰은 진짜와 위조 지폐를 구별하는 능력이 더 좋아질 것이다!</li>
</ul>
<h3 id="objective-function">objective function<img src="https://velog.velcdn.com/images/studying_cell/post/ad3d1c9e-e0ed-4a1e-b958-a8387ffcadc4/image.png" alt=""></h3>
<p><img src="https://velog.velcdn.com/images/studying_cell/post/44776a71-168b-482d-9a47-a71aafc76330/image.png" alt="">
<img src="https://velog.velcdn.com/images/studying_cell/post/50185d66-47de-4cbe-8b70-c5c7ba6f26fe/image.png" alt=""></p>
<h3 id="global-optimality">global optimality</h3>
<ul>
<li>for D,<img src="https://velog.velcdn.com/images/studying_cell/post/6e1994db-27b3-4e98-8d0f-c32c14d1e934/image.png" alt=""></li>
<li>for G,<img src="https://velog.velcdn.com/images/studying_cell/post/9c936836-5f9e-4c85-85c6-d78c77fd674e/image.png" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Neural Collaborative Filtering]]></title>
            <link>https://velog.io/@studying_cell/Neural-Collaborative-Filtering</link>
            <guid>https://velog.io/@studying_cell/Neural-Collaborative-Filtering</guid>
            <pubDate>Fri, 04 Aug 2023 08:01:47 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>Neural Collaborative Filtering</strong>
<em>Xiangnan He, Lizi Liao, Hanwang Zhang, Liqiang Nie, Xia Hu, Tat-Seng Chua
arXiv:1708.05031</em></p>
</blockquote>
<h2 id="recommendation-system_추천-시스템이란">Recommendation System_추천 시스템이란?</h2>
<p><em>사용자의 선호도 및 과거 행동을 토대로 사용자가 관심을 가질 만한 상품(영화/드라마/음악, 물건, 컨텐츠 등)을 제공하는 기계학습의 한 방법</em></p>
<h3 id="recsys의-목적">RecSys의 목적</h3>
<ol>
<li><strong>Prediction version of Problem (Matrix Completion Problem)</strong> : 학습을 통해 사용자의 선호도를 정확하게 예측하여, 하나의 결과를 도출하는 문제</li>
<li><strong>Ranking version of Problem</strong> : 사용자의 선호도를 반영하는 top-k개의 상품을 예측하는 문제</li>
</ol>
<h3 id="recsys의-종류">RecSys의 종류</h3>
<p>추천시스템 알고리즘은 크게 <strong>Content-based Filtering (콘텐츠 기반 필터링)</strong> 과 <strong>Collaborative Filtering (협력 필터링)</strong>, 그리고 <strong>Hybrid Filtering</strong> 으로 구분된다. 
<img src="https://velog.velcdn.com/images/studying_cell/post/479bedcf-9211-42fa-b2eb-6ff52146b6c5/image.png" alt=""></p>
<ol>
<li><strong>Content-based Filtering (콘텐츠 기반 필터링)</strong>
: 사용자가 과거에 선택하거나 구매한 상품과 비슷한 상품을 추천하는 알고리즘 방식</li>
<li><strong>Collaborative Filtering (협력 필터링)</strong>
: 비슷한 선호도를 가진 사용자들끼리 그룹으로 묶어, 같은 그룹에 속한 사람들이 과거에 선택하거나 구매한 상품을 사용자에게 추천하는 알고리즘 방식</li>
<li><strong>Hybrid Filtering</strong> 
: 다양한 추천시스템들을 결합하여 만든 알고리즘 방식으로, 기존 알고리즘이 가지고 있는 단점을 보완하고 새로운 장점을 창출해낼 수 있다. </li>
</ol>
<hr>
<h2 id="matrix-factorization-mf">Matrix Factorization (MF)</h2>
<p><img src="https://velog.velcdn.com/images/studying_cell/post/8fc5f6d5-ae3d-41e8-b200-0d9799a4b094/image.png" alt=""></p>
<ul>
<li>M = user의 수</li>
<li>N = item의 수
$\Rightarrow$ Y = user-item 행렬</li>
</ul>
<ul>
<li>이 때의 1과 0은, &#39;1 = user가 해당 item을 선택/구매한 적이 있다&#39;는 의미이지 &#39;user가 해당 item을 반드시 선호한다&#39;는 의미는 아니다. </li>
</ul>
<p>이 때, 행렬 Y의 y를 예측하는 하나의 방법으로 matrix factorization이 있다. </p>
<p><strong>Matrix Factorization (MF)</strong>
행렬 Y를 보다 저차원인 두 행렬 P와 Q로 분해하여 표현하는 방법
<img src="https://velog.velcdn.com/images/studying_cell/post/3c5cc2b5-dcb9-4e8b-a1b7-ea2b5fd4a728/image.png" alt="">
하지만, MF는 linear 방식이므로 user-item의 복잡한 관계를 설명하는데 한계점이 존재한다.
<img src="https://velog.velcdn.com/images/studying_cell/post/88d84b06-afc5-4af8-ba9e-370536110c65/image.png" alt="">
위의 그림처럼 user 1,2,3의 관계가 이미 표현되어 있을 때, user 4가 추가된 상황을 생각해 보자. user 4 는 user 1 &gt; user 3 &gt; user 2의 순서대로 유사도를 가지지만, 기존 user들 사이에 이를 반영하여 user 4의 정보를 나타낼 수 있는 방법이 없다. </p>
<h2 id="neural-collaborative-filtering">Neural Collaborative Filtering</h2>
<p>MF 모델의 linear방식에 의해 나타난 한계를 NCF에서는 multi-layer perceptron를 통해 non-linear의 특성도 고려할 수 있게 하여 해결한다. 
<img src="https://velog.velcdn.com/images/studying_cell/post/81c7a4b6-eb6c-4c50-bc2d-7e23264bd069/image.png" alt=""></p>
<ul>
<li>input layer : user와 item 정보가 one-hot encoding되어 벡터로 입력된다. </li>
<li>embedding layer : input 벡터를 dense 벡터로 mapping</li>
<li>Neural CF layer : DNN을 통과</li>
<li>output layer : (0,1)의 값으로 user과 item이 얼마나 관련되어 있는지 출력</li>
</ul>
<p>기존의 MF는 NCF의 special case가 되며, 이를 GMF로 명명한다. 그리고, linear한 특성을 잘 반영하는 GMF와 non-lienar한 특성을 잘 반영하는 MLP를 결합한 모델을 제시한다. 
<img src="blob:https://velog.io/c5d555a5-788e-46a6-a69f-6fc36320f04c" alt="업로드중.."></p>
<p><a href="https://leehyejin91.github.io/post-ncf/">참고자료</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Decision Tree]]></title>
            <link>https://velog.io/@studying_cell/Decision-Tree</link>
            <guid>https://velog.io/@studying_cell/Decision-Tree</guid>
            <pubDate>Wed, 26 Jul 2023 15:58:34 GMT</pubDate>
            <description><![CDATA[<h3 id="decision-tree">Decision Tree</h3>
<blockquote>
<p>Rule Based classifier
: 일련의 질문에 대한 답에 근거하여 데이터를 분류하는 모델
-classification, regression 모두 가능한 지도학습 모델</p>
</blockquote>
<ul>
<li>attribute (질문, 속성) : 하나의 질문 (분기)마다 변수 영역을 두 개로 구분</li>
</ul>
<h4 id="구성">구성</h4>
<ul>
<li><p>node : 질문 or 정답</p>
<ul>
<li>intermediate node</li>
<li>leaf node (terminal node) : 더 이상으 자손이 없는 노드</li>
<li>depth : 몇 개의 분기가 존재?</li>
</ul>
</li>
</ul>
<p>Decision Tree는 overfitting의 문제점을 가지고 있음.
$\rightarrow$ Pruning을 통해 해결</p>
<p>1) 사전 가지치기 : <strong>나무가 완성되기 전에,</strong>특정 조건을 만족하면 알고리즘 중단
2) 사후 가지치기 : <strong>나무가 완성된 후,</strong>하단 노드부터 유의하지 않은 바로 위 나무의 node로 변환</p>
<h4 id="사후-가지치기">사후 가지치기</h4>
<p>$&lt;$비용-복잡도 가지치기$&gt;$
<em>CC(T)=Err(T)+$\alpha$$*$L(T)</em>
위의 함수를 최소화하는 방향으로 가지치기를 수행</p>
<h4 id="좋은-decision-tree란">좋은 Decision Tree란?</h4>
<p>하나의 데이터를 통해 만들 수 있는 Decision Tree의 종류는 무한하다. 이 중, 각각의 <strong>attribute에 의해 분할된 영역에 class가 같은 데이터가 최대한 많이 존재할 수록</strong> 좋은 Tree라고 할 수 있다. </p>
<ul>
<li>Impurity (불순도) : 각 범주에 서로 다른 데이터가 얼마나 섞여 있는가? (=최대한 동일한 class끼리 구성되어 있어야 함)
$\rightarrow$ <strong>impurity를 최소화 하는 방향</strong>으로 학습이 진행된다. </li>
</ul>
<h4 id="알고리즘-진행-과정">알고리즘 진행 과정</h4>
<p>1) emtpy decision tree에서 시작
2) 다음 순서의 best attribute를 기준으로 split (이 순서에서 impurity지표 사용)
3) recurse
 &emsp;2)와 3)의 과정을 반복한다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[VGGNet]]></title>
            <link>https://velog.io/@studying_cell/VGGNet-mj2iccic</link>
            <guid>https://velog.io/@studying_cell/VGGNet-mj2iccic</guid>
            <pubDate>Tue, 25 Jul 2023 09:24:48 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h4 id="very-deep-convolutional-networks-for-large-scale-image-recognition">VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION</h4>
</blockquote>
<h5 id="karen-simonyan∗--andrew-zissermanvisual-geometry-group-department-of-engineering-science-university-of-oxford">(Karen Simonyan∗ &amp; Andrew Zisserman+Visual Geometry Group, Department of Engineering Science, University of Oxford)</h5>
<p>ILSVRC 2014년 대회에서 2등을 차지한 모델로, 모델의 깊이가 성능에 어떤 영향을 미치는지 보여준다. VGG 이전의 모델들은 8 layers정도의 깊이였던 반면, VGGNet은 이보다 훨씬 깊은 16 layers를 이용하여 깊이가 깊어질수록 모델의 성능이 향상되는 것을 확인할 수 있다. (하지만 무작정 모델을 깊게 만드는 것이 성능 향상을 보장하는 것은 아니다!)</p>
<h2 id="architecture">Architecture</h2>
<p><em>In this work we investigate the effect of the convolutional network depth on its accuracy in the large-scale image recognition setting. Our main contribution is a thorough evaluation of networks of increasing depth using an architecture with very small (3 × 3) convolution filters, which shows that a significant improvement on the prior-art configurations can be achieved by pushing the depth to 16–19 weight layers.</em>
 <em>The convolution stride is fixed to 1 pixel; the spatial padding of conv. layer input is such that the spatial resolution is preserved after convolution, i.e. the padding is 1 pixel for 3 × 3 conv. layers. Spatial pooling is carried out by five max-pooling layers, which follow some of the conv. layers (not all the conv. layers are followed by max-pooling). Max-pooling is performed over a 2 × 2 pixel window, with stride 2.</em></p>
<p> <img src="https://velog.velcdn.com/images/studying_cell/post/f761bd09-eb05-4405-94dd-f87e9d657179/image.png" alt=""></p>
<hr>
<p> <img src="https://velog.velcdn.com/images/studying_cell/post/fce72624-3e96-488c-a313-01a5c4f9e132/image.png" alt=""></p>
<ul>
<li>input image 크기 = 224*224</li>
<li>13 convolution layers + 3 fc layers (VGG16)</li>
<li>3*3 크기의 convolution filters</li>
<li>ReLU activation function</li>
<li>2*2 max pooling<ul>
<li>max pooling을 한 번 진행할 때마다 image의 크기가 1/2으로 감소</li>
</ul>
</li>
<li>VGG block = convolution layers + max pooling<ul>
<li>VGG block에서는 &#39;1) 몇 개의 conv layers를 사용할지, 2) filter를 몇 개 사용할지&#39; 결정</li>
</ul>
</li>
</ul>
<h4 id="vggnet의-핵심">VGGNet의 핵심</h4>
<p><code>Receptive field</code>
 : 출력 layer의 뉴런 하나에 영향을 미치는 입력 뉴런들의 공간 크기
 -convolution layer를 사용 할수록 1 pixel이 가지고 포함하고 있는 원본 이미지의 범위가 커짐.</p>
<ul>
<li>첫 번째 3*3 conv layer
$\rightarrow$ 1 pixel이 원본 이미지의 3*3 pixel의 정보를 가지고 있음 </li>
<li>두 번째 3*3 conv layer
$\rightarrow$ 1 pixel이 원본 이미지의 layerdml 5*5 정보를 가지고 있음</li>
<li>세 번째 3*3 conv layer
$\rightarrow$ 1 pixel이 원본 이미지의 layerdml 7*7 정보를 가지고 있음 </li>
</ul>
<p><strong>7 *7 filter 1개 vs 3*3 filter 3개</strong></p>
<ul>
<li>각각의 convolution 연산이 수행될 때마다 ReLU 함수가 적용된다.
$\rightarrow$ 비선형성 증가</li>
<li>학습 파라미터의 수 감소
$\rightarrow$ 7*7 filter 1개 적용 시, 학습 파라미터의 수는 49개인 반면, 3*3 filter 3개 적용 시 필요한 학습 파라미터의 수는 27개이다. </li>
</ul>
<hr>
<h4 id="실습-코드-자료">실습 코드 자료</h4>
<p><a href="https://www.youtube.com/watch?v=ACmuBbuXn20">https://www.youtube.com/watch?v=ACmuBbuXn20</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[trial]]></title>
            <link>https://velog.io/@studying_cell/trial</link>
            <guid>https://velog.io/@studying_cell/trial</guid>
            <pubDate>Sat, 22 Jul 2023 14:51:39 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>마크다운 사용법
<a href="https://velog.io/@yuuuye/velog-%EB%A7%88%ED%81%AC%EB%8B%A4%EC%9A%B4MarkDown-%EC%9E%91%EC%84%B1%EB%B2%95/">https://velog.io/@yuuuye/velog-마크다운MarkDown-작성법/</a></p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>