<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jj_style.log</title>
        <link>https://velog.io/</link>
        <description>데이터 속에서 인사이트를 찾자</description>
        <lastBuildDate>Wed, 05 Apr 2023 07:00:10 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>jj_style.log</title>
            <url>https://velog.velcdn.com/images/jj_style/profile/eab8d745-2a5e-41e0-8a33-d5381e02df9d/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. jj_style.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jj_style" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Least Square Method, 
ALS 수식 증명]]></title>
            <link>https://velog.io/@jj_style/Least-Square-MethodALS</link>
            <guid>https://velog.io/@jj_style/Least-Square-MethodALS</guid>
            <pubDate>Wed, 05 Apr 2023 07:00:10 GMT</pubDate>
            <description><![CDATA[<h2 id="least-square-method">Least Square Method</h2>
<blockquote>
<ul>
<li>Wikipedia
최소 제곱법(Least Square Method)은 데이터의 잔차(Residual) 제곱합을 최소화하는 모수(Parameter)를 추정하는 방법입니다.</li>
</ul>
</blockquote>
<ul>
<li>특히 선형 회귀 분석(linear regression analysis)에서 많이 사용된다.</li>
<li>오차(Noise)가 가우시안 분포를 따른다는 가정 하에, 최적의 예측값(Predicted Value)을 추정할 수 있습니다.</li>
<li>데이터셋에서 빠르게 계산할 수 있으며, 이를 통해 큰 규모의 데이터셋에서도 적용할 수 있습니다.<blockquote>
</blockquote>
The goal is to find the parameter values for the model that &quot;best&quot; fits the data.<blockquote>
<blockquote>
<p>$$r_{i}=y_{i}-f\left(x_{i}, \boldsymbol{\beta}\right)$$</p>
<ul>
<li>Residual : 타겟값 - 예측값</li>
</ul>
</blockquote>
<blockquote>
<p>$$S=\sum_{i=1}^{n} r_{i}^{2}$$</p>
</blockquote>
</blockquote>
</li>
<li>the sum of squared residuals<blockquote>
<blockquote>
<p>The least-squares method finds the optimal parameter values by minimizing the sum of squared residuals.</p>
</blockquote>
<blockquote>
<p>$$\frac{\partial S}{\partial \beta_{j}}=2 \sum_{i} r_{i} \frac{\partial r_{i}}{\partial \beta_{j}}=0, j=1, \ldots, m$$</p>
</blockquote>
<p>and since $r_{i}=y_{i}-f\left(x_{i}, \boldsymbol{\beta}\right)$, the gradient equations become</p>
<blockquote>
</blockquote>
<p>$$-2 \sum_{i} r_{i} \frac{\partial f\left(x_{i}, \boldsymbol{\beta}\right)}{\partial \beta_{j}}=0, j=1, \ldots, m$$</p>
</blockquote>
</li>
<li>The minimum of the sum of squares is found by setting the gradient to zero. Since the model contains m parameters, there are m gradient equations.
미분한 값이 0이 되도록 학습하면 된다.<blockquote>
</blockquote>
데이터를 각각의 모델에 맞게 적합시킨 결과
<img src="https://velog.velcdn.com/images/jj_style/post/cfc27f13-1ee9-495e-8b31-0208b9371e6f/image.png" alt=""><blockquote>
<ul>
<li>2차 함수 
<img src="https://velog.velcdn.com/images/jj_style/post/e943eb3a-61ac-44d6-962e-6c8f005ab723/image.png" alt=""></li>
</ul>
</blockquote>
</li>
<li>타원형<blockquote>
<blockquote>
<ul>
<li>PLUS
f(x)가 2차 함수, 타원 등.. 어떤 형태가 주어지고 
만약 y=ax^2+bx+c가 f(x)라면 a,b,c를 찾는 것을 의미한다.</li>
</ul>
</blockquote>
</blockquote>
</li>
</ul>
<blockquote>
<ul>
<li>추천 시스템에서 최소 제곱법(Least Square Method)
사용자의 구매 기록이나 평가 데이터를 토대로 상품의 특성과 사용자의 취향을 분석하여 상품 추천을 제공하는 데 사용될 수 있다.
예측 값이 사용자가 아직 구매하지 않은 상품에 대한 사용자의 선호도라고 가정하면 아직 구매하지 않은 상품에 대한 예측 값을 계산할 수 있습니다.</li>
</ul>
<blockquote>
<p>예를 들어, 영화 추천 시스템에서는 영화 제목, 배우, 감독, 장르 등의 특성을 상품 변수로, 사용자의 선호도를 나타내는 변수로는 영화에 대한 평가나 시청 기록 등을 사용할 수 있습니다.
이후, 최소 제곱법을 사용하여 상품 변수와 사용자 변수 간의 관계를 모델링하고, 모델을 이용하여 아직 구매하지 않은 상품에 대한 예측 값을 계산합니다. 이렇게 계산된 예측 값(선호도)이 높은 상위 상품 목록을 사용자에게 추천할 수 있습니다.</p>
</blockquote>
</blockquote>
<ul>
<li>Check Point</li>
</ul>
<ol>
<li>최소 제곱법은 일반적으로 선형 회귀 모델에 적용되는 방법이기 때문에, 추천 시스템에서는 상품과 사용자의 선호도를 선형적인 관계로 모델링한다는 가정이 필요합니다. 따라서, 추천 시스템에서 최소 제곱법을 사용하기 전에 이 가정이 적절한지 검토해야 합니다.</li>
<li>최소 제곱법은 이상치(outlier)나 데이터 분포의 비선형성 등에 민감할 수 있으므로, 이러한 문제에 대한 처리가 필요할 수 있습니다.</li>
</ol>
<hr>
<h2 id="alternating-least-square">Alternating Least Square</h2>
<blockquote>
<ul>
<li>ALS 목적함수
<img src="https://velog.velcdn.com/images/jj_style/post/d7ed15c3-2ed0-476a-be4e-58b41bc8521a/image.png" alt=""></li>
</ul>
</blockquote>
<ul>
<li>동작 방식
<img src="https://velog.velcdn.com/images/jj_style/post/4b96e860-86de-463d-a31a-7ad94a88cc06/image.png" alt="">
ALS의 메인 아이디어는 MF에 사용되는 사용자와 아이템 잠재벡터 이렇게 두 종류의 파라미터를 서로 번갈아가면서 업데이트를 한다는 것이다. 즉, P와 Q 중 하나를 고정해놓고 다른 하나를 업데이트하는 방식이다.<blockquote>
<blockquote>
<ul>
<li>각각을 고정했을 때의 목적식
$$\begin{aligned}
&amp; \min <em>{p</em>{u}}\left|r_{u}-Q p_{u}\right|^{2}+\lambda\left|p_{u}\right|^{2} \
&amp; \min <em>{q</em>{i}}\left|r_{i}-P q_{i}\right|^{2}+\lambda\left|q_{i}\right|^{2}
\end{aligned}$$</li>
</ul>
</blockquote>
</blockquote>
<img src="https://velog.velcdn.com/images/jj_style/post/4a9fb0e2-c9d3-4ddd-840f-a9656e5f6191/image.png" alt=""><blockquote>
</blockquote>
</li>
</ul>
<blockquote>
<p>$$p_{u} \text { 의 목적함수 } \quad \min <em>{p</em>{u}}\left|r_{u}-Q p_{u}\right|^{2}+\lambda\left|p_{u}\right|^{2}$$</p>
<ol>
<li>목적함수 전개
$$\begin{aligned}
L\left(p_{u}\right) &amp; =\left|r_{u}-Q p_{u}\right|^{2}+\lambda\left|p_{u}\right|^{2} \
&amp; =\left(r_{u}-Q p_{u}\right)^{T}\left(r_{u}-Q p_{u}\right)+\lambda p_{u}{ }^{T} p_{u} \
&amp; =r_{u}{ }^{T} r_{u}-r_{u}{ }^{T} Q p_{u}-p_{u}^{T} Q^{T} r_{u}+p_{u}^{T} Q^{T} Q p_{u}+\lambda p_{u}{ }^{T} p_{u} \
&amp; =r_{u}{ }^{T} r_{u}-2 r_{u}{ }^{T} Q p_{u}+p_{u}^{T} Q^{T} Q p_{u}+\lambda p_{u}{ }^{T} p_{u}
\end{aligned}$$</li>
</ol>
</blockquote>
<ol start="2">
<li>목적함수를 파라미터로 미분하기<blockquote>
<p>$$\begin{aligned}
\frac{\partial L\left(p_{u}\right)}{\partial p_{u}} &amp; =\frac{\partial}{\partial p_{u}}\left(r_{u}{ }^{T} r_{u}-2 r_{u}{ }^{T} Q p_{u}+p_{u}^{T} Q^{T} Q p_{u}+\lambda p_{u}{ }^{T} p_{u}\right) \
&amp; =-2 r_{u}{ }^{T} Q+2 p_{u}^{T} Q^{T} Q+2 \lambda p_{u}{ }^{T}
\end{aligned}$$</p>
<ol start="3">
<li>목적함수의 미분값을 0으로 설정한 후에 최적 파라미터를 구한다.</li>
</ol>
<p>$$\begin{gathered}</p>
</blockquote>
</li>
</ol>
<p>-2 r_{u}^{T} Q+2 p_{u}^{T} Q^{T} Q+2 \lambda p_{u}^{T}=0 \
p_{u}^{T} Q^{T} Q+\lambda p_{u}^{T}=r_{u}^{T} Q \
p_{u}^{T}\left(Q^{T} Q+\lambda I\right)=r_{u}^{T} Q \
\left(Q^{T} Q+\lambda I\right)^{T} p_{u}=Q^{T} r_{u} \
\left(Q^{T} Q+\lambda I\right) p_{u}=Q^{T} r_{u} \
p_{u}=\left(Q^{T} Q+\lambda I\right)^{-1} Q^{T} r_{u}
\end{gathered}$$</p>
<blockquote>
</blockquote>
<ol start="4">
<li>ALS를 사용한 MF의 파라미터 업데이트 수식<blockquote>
<p>$$\begin{aligned}
&amp; p_{u}=\left(Q^{T} Q+\lambda I\right)^{-1} Q^{T} r_{u} \
&amp; q_{i}=\left(P^{T} P+\lambda I\right)^{-1} P^{T} r_{i}
\end{aligned}$$</p>
</blockquote>
</li>
</ol>
<ul>
<li>Plus<blockquote>
<p>numpy.linalg.solve(A,B): Ax=B에서 x를 찾아준다.</p>
</blockquote>
</li>
</ul>
<blockquote>
<ul>
<li>Implicit Feedback을 고려해보자!
<img src="https://velog.velcdn.com/images/jj_style/post/05aca836-5bbd-4a6d-a228-13a5c202ad67/image.png" alt=""></li>
</ul>
</blockquote>
<ul>
<li>유저 u가 아이템 i를 선호하는 지 여부(Preference)를 Binary로 표현하여 사용한다.
<img src="https://velog.velcdn.com/images/jj_style/post/35f874e2-e010-45f7-99d2-a8126c3568b4/image.png" alt=""></li>
<li>사용자가 아이템을 얼마나 선호하는지를 나타낸 Confidence 값을 정의한다. 여기서 α는 인터랙션(positive feedback, negative feedback)이 있는 경우 r의 중요도를 조절하는 하이퍼파라미터이다. 
<img src="https://velog.velcdn.com/images/jj_style/post/349f8422-994c-4094-a4fc-1a8f32acaa30/image.png" alt=""></li>
<li>목적함수: r -&gt; f(Preference)로 변환한 후, 얼마나 선호하는 지(Confidence를) 정보를 곱해주었다. 
<img src="https://velog.velcdn.com/images/jj_style/post/669b2e25-49f0-4930-b3d1-cd0fe9ace06e/image.png" alt=""></li>
<li>Preference와 Confidence를 고려한 업데이트 수식</li>
</ul>
<blockquote>
<ul>
<li>ALS와 SGD 
ALS는 SGD와 다르게 데이터 포인트를 순차적으로 업데이트 하지 않아도 되고 주어진 행렬을 가지고 계산하면 되기 때문에 행렬을 쪼개서 분산처리가 가능하여 학습 속도가 매우 빠르다. </li>
</ul>
</blockquote>
<p>ALS는  또한 Sparse한 데이터에 대해 SGD보다 강건(Robust)한 모습을 보인다. Implicit Feedback의 경우 Explicit Feedback보다 더 Sparse한 경향이 있다. 따라서 Implicit Feedback에는 SGD보다 ALS를 사용하는 것이 유리하다.
Sparse하다: 아이템에 대한 정보가 적고, 사용자와 아이템 간의 연결이 드문 경우를 말합니다</p>
<blockquote>
<ul>
<li>다음에 공부할 것
ALS 기반으로 학습한 모델에 대해서 ANN기법을 사용하여 모델을 서빙한다.
모든 아이템의 유사도를 구하려면 시간이 많이 소요된다.
accuracy latency 간의 trade-off를 고려해야 한다.
annoy , faiss 등의 라이브러리를 활용해서 빠른 서빙을 한다.</li>
<li><ul>
<li>평가지표</li>
</ul>
</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>참고 자료 
<a href="https://en.wikipedia.org/wiki/Least_squares">위키피디아 Least Square</a>
<a href="https://sungkee-book.tistory.com/13">ALS 블로그</a>
<a href="http://yifanhu.net/PUB/cf.pdf">Implicit Feedback 데이터에 적합하도록 MF 기반 모델을 설계하여 성능을 향상시킨 논문</a> </li>
</ul>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Rule Based, Model Based 추천시스템의 장점과 단점, 그리고 생각해볼 주제]]></title>
            <link>https://velog.io/@jj_style/5%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@jj_style/5%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Wed, 05 Apr 2023 02:06:02 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>Q. rule base의 장점은 무엇이 있을까?
Rule-based 추천 시스템은 사용자에게 상품을 추천할 때, 미리 정의된 규칙(rule)을 이용하여 추천하는 방식입니다. 이러한 방식은 사용자의 이전 행동이나 정보를 이용하여 추천을 수행하기 때문에, 모델 기반의 추천 방식보다는 덜 정교하지만, 투명하고 직관적인 장점이 있습니다.</p>
</blockquote>
<p>예를 들어, 음악 추천 서비스에서는 사용자가 이전에 재생한 음악, 좋아요를 누른 음악, 장르, 가수 등의 정보를 이용하여 추천을 수행할 수 있습니다. 이 때, &quot;이 사용자가 이전에 재생한 노래의 장르가 &#39;힙합&#39;이면, 힙합 관련 음악을 추천한다&quot; 또는 &quot;이 사용자가 이전에 좋아요를 누른 가수가 &#39;방탄소년단&#39;이면, 방탄소년단의 다른 노래를 추천한다&quot;와 같은 규칙을 이용하여 추천을 수행할 수 있습니다.</p>
<blockquote>
<p>Q. 인문학적 관점에서 rule base를 생각해보자!
&quot;맥북을 사용하는 사람들은 스타벅스를 좋아해&quot;
사용자들이 관심을 가지지 않을 상품이나 서비스를 제안하지 않아서 사용자들이 불필요한 정보에 노출될 위험이 줄어들 수 있다.
하지만 규칙을 수동으로 정의하는 과정에서 개인적인 편견이나 선입견이 추천 모델에 반영될 수 있고 새로운 아이디어에 노출될 가능성이 적다.</p>
</blockquote>
<p>-&gt; 만약 우리가 rule based 모델을 만든다면, 우리가 만든 모델이 도덕적으로 사회적으로 적절한 기준을 가지고 추천을 수행하는 지, 개인적인 편향된 사고가 들어가 문제가 되는 것은 아닌지 생각해보면 좋겠다.</p>
<blockquote>
<p>Q. 그렇다면 model based 추천 시스템 통해 학습한 모델은 문제가 없을까? </p>
<p>켄 리우, 「천생연분」 SF소설, 단편소설
거의 대부분의 사람들이 인공지능비서 &#39;틸리&#39;를 사용하는 시대, 어떤 것이 효율적이고 좋은 것인지 추천해주며 심지어 소개팅 자리에서 어떤 행동을 하면 좋고 상대가 나에게 보일 호감도까지 알려준다.
이에 대한 회의감을 느낀 주인공은 인공지능을 해킹해서 없애려고 하는데..
마지막 부분에서 센틸리언이라는 &#39;틸리&#39;를 만든 대기업 오너가 나와 주인공에게 말한다. &quot;기술의 발전에 따라 사용하지 않을 수는 없는데 본인의 기업은 다른 기업들보다 &#39;어떻게 하면 좀 더 합리적일까?&#39;를 고민한다&quot;고 얘기하며 주인공에게 자신과 함께 일하자고 얘기했다.
-&gt; 기술의 발전을 우리는 어떻게 받아들여야 할 지 고민해보면 좋을 것 같다.
추천 시스템을 사용하는 경우에도, 사람들이 주체성을 잃지않도록하는 방법에 대해서 생각해보면 좋겠다.</p>
</blockquote>
<p>많은 사람들이 사용하는 ChatGPT에서 몇일 전, 독도에 대한 분쟁이 있다고 대답한 내용이 뉴스에 화제가 되었다.
이러한 정확하지 않은 말을 하는 경우에 대해서 대부분의 사람들은 진실로 받아드릴 수 있는데 이러한 문제는 어떻게 해결해야 할까?</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[27살의 회고..!]]></title>
            <link>https://velog.io/@jj_style/27%EC%82%B4%EC%9D%98-%ED%9A%8C%EA%B3%A0</link>
            <guid>https://velog.io/@jj_style/27%EC%82%B4%EC%9D%98-%ED%9A%8C%EA%B3%A0</guid>
            <pubDate>Sun, 02 Apr 2023 14:23:02 GMT</pubDate>
            <description><![CDATA[<h2 id="2023년-4월-2일">2023년 4월 2일</h2>
<blockquote>
<p>먼저, 이 글은 네이버 커넥트 재단의 부스트 캠프 AI Tech 5기에 합류하고 4주 차가 끝난 시점에 지금까지 공부를 잘하고 있는지 앞으로는 어떤 마음으로 임할 것인 지에 대해 고민했던 것들을 적어보려고 합니다.</p>
</blockquote>
<p>정신없이 쏟아지는 학습량을 따라 공부하다 보니 내가 잘하고 있는 것인가에 대한 의문, 번아웃, 심정의 변화, ... 등 다양한 생각들이 들 때가 있었습니다.
취업을 할 시기가 다가오니 사회가 정한 직무의 틀 안에서 내가 좋아하고 잘하는 일을 찾아서 정하고 그에 맞는 자격을 갖추기 위해서 AI 공부를 시작하게 되었습니다.
사실 이 자체도 중요한 과정이라 생각이 들지만, 처음에는 분명 내가 하고 싶은 일이 있었는데 정신없이 공부하다 보니 목표를 잃고 이 공부를 왜 하지라는 생각이 들기도 합니다.</p>
<blockquote>
</blockquote>
<p>왜 데이터 사이언티스트가 되고 싶은지, 추천 시스템에서는 무엇을 하고 싶은지에 대해서 생각해 보려고 합니다.
지금 내가 무엇을 위해 부스트 캠프에서 AI, 추천 시스템을 배우고 있는지에 대해서 명확하게 목표를 설정하고 나아가기 위해 지난 27년을 회고해 보려고 합니다.</p>
<hr>
<h2 id="코딩과-관련해서-지금까지-내가-해-본-것">코딩과 관련해서 지금까지 내가 해 본 것</h2>
<blockquote>
<p>전자공학과를 입학하면서 1학년 때에 C와 C++를 입문했지만 너무 어렵고 낯설고 이런 코딩을 왜 하는 것인지에 대한 회의감을 느껴 프로그래밍과 멀어졌습니다.</p>
</blockquote>
<ul>
<li>실제 코딩에 입문한 것은 전역 후, 2020년도에 유튜브 생활코딩에서 이고잉님의 WEB1강의를 수강하면서 부터였습니다. 코딩을 통해 무엇을 할 수 있고 하나씩 단계를 밟으며 구현되는 결과물을 바로 느끼고 이를 실제 동아리 활동에 적용해보는 것이 매우 재밌었습니다.<blockquote>
</blockquote>
</li>
<li>로봇 코딩 교육회사 (로보메이션)
2021년 1월 ~ 3월
C++을 사용하여 로봇의 동작, 감정을 구현했다.<blockquote>
</blockquote>
</li>
<li>캡스톤 프로젝트
2021년 1학기
마스크 판별 탐지하는 딥러닝 모델을 가져와 마스크 미착용자를 감지해서 사진을 촬영하고 경비에게 알려주는 경비시스템<blockquote>
</blockquote>
</li>
<li>산업용 자율주행로봇 제어 부트캠프
2022년 1월~5월
ROS, Linux, Ubuntu, Python<blockquote>
</blockquote>
</li>
<li>코딩 테스트를 본격적으로 시작
파이썬으로 코딩테스트 준비</li>
<li><blockquote>
<p>백준 골드 5, 프로그래머스를 2단계,3단계 푸는 중..</p>
</blockquote>
</li>
<li>부스트캠프 AI tech 5기
2023년도 3월 ~ 8월 2일까지 파이팅!</li>
</ul>
<h3 id="독서-동아리-홈페이지">독서 동아리 홈페이지</h3>
<blockquote>
<ul>
<li>자기 개발 독서 동아리를 운영하면서 만든 홈페이지입니다.</li>
</ul>
</blockquote>
<p>단순 html과 css로 만든 페이지이고 미적 감각이나 특별한 기능은 없습니다.
하지만, 웹 페이지를 만들어 동아리원들이 워드에 기록한 회의록을 보는 것이 아니라 휴대폰으로 사이트에 접속해 도서별로 나눈 얘기를 다시 볼 수 있게 공유했습니다. 댓글 기능을 추가한 것과 휴대폰에서 볼 수 있도록 기기별로 페이지가 다르게 보이도록 설정했던 기억이 남아있습니다.</p>
<blockquote>
</blockquote>
<p>지금은 노션으로 간단하게 작성해서 공유할 거 같긴합니다..
<img src="https://velog.velcdn.com/images/jj_style/post/7f63cdf0-5439-4b5d-815e-492f851fa80f/image.png" alt="">
-
<img src="https://velog.velcdn.com/images/jj_style/post/a23f9d33-da0c-4235-a5cf-eb4e7b282abf/image.png" alt="">
-
<img src="https://velog.velcdn.com/images/jj_style/post/b5290670-3ca9-4cc1-a8c0-143c25b70559/image.png" alt=""></p>
<h3 id="자율주행-교육">자율주행 교육</h3>
<blockquote>
<ul>
<li>자율주행 로봇 코딩을 하고 있었던 나..
Wego 코리아에서 제공받은 자율주행 로봇을 조작해서 map을 그리고 자율주행 동작 코드를 작성하여 여러 미션을 수행하는 임무를 수행했다.
처음 배우는 ROS교육을 받고 대회 미션에 맞게 로봇을 동작시키고 나름 괜찮은 성적을 얻었다. 아무것도 모르고 시작했지만 결과를 보고 모든 해낼 수 있을 거 같다는 생각과 꿈꾸던 자율주행, 로봇 산업에 대한 비전이 회의적으로 바뀌게 된 계기였다. 자율주행을 한다면 컴퓨터 비전을 공부해야겠다는 생각을 했다.</li>
</ul>
</blockquote>
<p><img src="https://velog.velcdn.com/images/jj_style/post/c0e3a129-8100-4097-80a7-a076204c747f/image.jpeg" alt=""></p>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/jj_style/post/d324915e-a0aa-4b76-ac78-957eff58cf2b/image.jpeg" alt=""></p>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/jj_style/post/4a8c1f8a-4099-41b8-87a5-06d6601991ef/image.jpeg" alt=""></p>
<hr>
<h2 id="나의-꿈">나의 꿈</h2>
<blockquote>
<p>꿈이나 커리어는 바뀔 수 있고 상황이 어떻게 변할지 모르지만 사람들의 수요가 있는 쪽으로 나아갈 것 같다.
많은 사람들이 사용하는 서비스를 개발해보고 싶다.</p>
</blockquote>
<h3 id="해보고-싶은-프로젝트">해보고 싶은 프로젝트</h3>
<blockquote>
<p>패션을 좋아하다보니 KREAM이나 발란 같은 명품 리셀 플랫폼에 대한 관심이 있었고 사람들의 수요에 따라 가격이 변동되는 시장을 발견하게 되었습니다. 해당 플랫폼에서는 찜이나 로그 등을 수집할 수 있을 것 같은데요. 
한정판 제품의 가치는 사람들이 정하는 것처럼 각각의 개인에서 가심비있는 제품을 추천해주는 서비스를 생각해보게 되었습니다.
이런 서비스를 구현하기위해서 추천 시스템에 대한 학습과 프로젝트 경험이 필요하다고 생각했습니다.
<a href="https://www.notion.so/a4f76e273e7e419595d8bea965298a63">패션 아이디어 노션 페이지</a></p>
</blockquote>
<h2 id="데이터-사이언티스트-추천-시스템을-공부하는-이유">데이터 사이언티스트, 추천 시스템을 공부하는 이유</h2>
<blockquote>
<p>사람들에게 추천하는 것을 실제로도 좋아합니다.
마케팅에도 관심이 많으며 사람들의 행동에 대해서 궁금증이 많습니다.
제품을 소개하고 판매하는 관점에서 내가 하는 일이 수익과 직접적으로 연결된 일에 흥미를 느낍니다.
단순히 모델의 기능을 최적화하는 것보다는 모델에 어떤 입력을 주어 그에 관련한 결과를 분석하고 현실의 문제를 정말 이 모델이 해결할 수 있는 지 적용해보는 것이 재밌습니다.
정답이 없는 분야이고 모델을 평가하기에도 마땅한 지표가 없는 분야입니다.
그래서 더 매력적인 분야이기도 합니다!
기술을 적용해서 실제 사람들에게 만족감을 주고 싶습니다.</p>
</blockquote>
<h2 id="교육-수료-후-5년-뒤">교육 수료 후 5년 뒤..</h2>
<blockquote>
<ul>
<li>부스트캠프 AI Tech 5기를 수료하고 난 후, 캠프에서 진행한 추천 시스템 프로젝트와 연관된 업무가 있는 회사에 취직하여 기업의 프로젝트를 해나갈 것입니다.</li>
</ul>
</blockquote>
<ul>
<li>빅데이터와 관련된 학습과 빠르게 변하는 AI 기술을 주기적으로 따라가며 논문을 읽고 코드를 구현하거나 새로운 방법을 찾아 논문을 작성해 AI 분야의 성장에 이바지하는 개발자로 성장하고 싶습니다. </li>
<li>취업 후에도 커뮤니티에서 활발히 활동하며 주니어분들의 프로젝트를 도와주고 팀장으로 캐글이나 해커톤에 참가하여 입상하는 것이 목표입니다.</li>
<li>교육 수료 후 5년 뒤에는 단순히 모델 개발에 그치지 않고 DS 분야로 나아가 빅데이터를 가공하여 새로운 인사이트를 찾아낼 수 있는 개발자가 되어 회사의 비전을 제시할 수 있는 역할을 맡을 것입니다. <blockquote>
<blockquote>
<p>광고 추천과 유튜브 알고리즘과 같은 추천 모델도 좋지만, 사람들이 불편해하거나 원하고 있는 서비스를 찾아 회사의 이익과 사회의 이익 양쪽에 도움이 되는 일을 찾아 나가는 개발자가 되고 싶습니다.</p>
</blockquote>
</blockquote>
</li>
</ul>
<h2 id="발전하고-있는-것들">발전하고 있는 것들</h2>
<blockquote>
<ul>
<li>현재 목표는 하나라도 제대로로 바뀌었다. </li>
</ul>
</blockquote>
<ul>
<li>AI에 대한 기초를 하나씩 배우며 노션에 잘 정리해나가고 있다.</li>
<li>학습 정리를 체계적으로 해나가고 있으며 회고록도 꾸준히 작성하고 있다.</li>
<li>스스로 문제를 정의하고 검색(구글링 + ChatGPT)을 통해 답을 찾아나가고 있다.</li>
<li>같은 분야에서 일하게 될 좋은 동료들과 멘토님을 만나고 있다.</li>
</ul>
<h2 id="스스로에게-하고-싶은-말">스스로에게 하고 싶은 말</h2>
<blockquote>
<p>오늘은 어제보다 더 나은 내가 되길..!
방향을 정하고 관련해서 매일 하나씩이라도 배운다면 나는 잘 성장하고 있는 것이다! 
너무 불안해 하지 말자.!!</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Auto Encoder]]></title>
            <link>https://velog.io/@jj_style/Auto-Encoder</link>
            <guid>https://velog.io/@jj_style/Auto-Encoder</guid>
            <pubDate>Tue, 28 Mar 2023 05:48:39 GMT</pubDate>
            <description><![CDATA[<blockquote>
</blockquote>
<h1 id="ae---vae---aae">AE -&gt; VAE -&gt; AAE</h1>
<p>정의에서 부터 어떤 특징(장단점)이 있고 어떤 식으로 모델이 발전해 나가는 지 파악해보자.</p>
<blockquote>
</blockquote>
<h2 id="auto-encoders">Auto Encoders</h2>
<ul>
<li>정의
입력과 출력이 동일한 형태를 가지는 신경망이며 차원 축소를 목적으로 feature detection, classification을 비지도 학습의 형태로 학습하는 신경망입니다.
비지도 학습이므로 라벨이 없이 데이터만 주어진 상황에서 학습한다.
목적: Encoder가 Latent Feature를 뽑아내기 위함.<blockquote>
</blockquote>
<img src="https://velog.velcdn.com/images/jj_style/post/883687f8-9c37-4c3f-96ce-955551497d75/image.png" alt="">
Encoder, Decoder, Latent Feature로 이루어져있습니다.
Decoder는 latent feature가 제대로 추출되었는 지 확인하는 역할을 하고 backpropagation으로 검사 및 확인합니다. 
latent feature는 신경망 내부에서 추출된 특징적 값들입니다.
<img src="https://velog.velcdn.com/images/jj_style/post/c9c5c0de-a441-4346-89ae-7e3f50cd2454/image.png" alt=""> </li>
<li>차원을 축소하는 것이 일반적으로 학습에 도움이 되는 이유
<img src="https://velog.velcdn.com/images/jj_style/post/366dc216-be8a-40e5-a4e3-bf5050267941/image.png" alt="">
차원의 저주?
고차원 공간의 데이터를 분석하거나 측정할 때 저차원 공간에서는 나타나지 않았던 여러 문제들이 발생하는 것을 말합니다.
특징 방향, 방향성을 예측하기 어려움.</li>
</ul>
<blockquote>
</blockquote>
<ul>
<li>차원 축소 해도 문제가 없나? 
손실은 있을 수 있지만 복원할 수 있다는 것은 Latent Vector가 많은 정보를 잘 담고있음을 보여줄 수 있다.
<img src="https://velog.velcdn.com/images/jj_style/post/6397543d-26f6-4227-aad8-d6070f0dd1f4/image.png" alt=""></li>
<li>Manifold Hypothesis
sparse한 고차원 데이터를 간추려서 보다 저차원 공간으로 나타낼수 있다.
SPARSE implies a thin scattering of units.
manifold: 다차원 데이터에서 실질적으로 의미를 가지는 특징을 모아둔 조밀한 특성공간을 뜻하며, 실제 데이터를 통해 스스로 학습하는 딥러닝 비지도 학습이 이러한 manifold를 스스로 찾아냅니다.</li>
</ul>
<blockquote>
</blockquote>
<h2 id="variational-auto-encoder">Variational Auto Encoder</h2>
<p><img src="https://velog.velcdn.com/images/jj_style/post/1de10752-fb5c-4385-a68a-fc916dbb5245/image.png" alt="">
목적: Decoder로 새로운 데이터를 생성하기 위해서 개발된 모델이다. </p>
<ul>
<li>구조
인코더는 평균과 표준편차를 변환한다. 
평균과 표준편차로 부터 정규분포를 만들고 이를 활용해서 데이터를 샘플링해서 z를 만든다. 
z가 디코더를 통과하면 입력과 동일한 출력을 복원한다.
<img src="https://velog.velcdn.com/images/jj_style/post/0ea10168-2f26-4b76-a5f6-0b1eebeb0ad9/image.png" alt="">
Reparameterization Trick: 
간단히 말하자면, Backpropagation, 정규분포는 미분 불가능한데 이를 가능하게 해주는 기법.
ϵ을 N(0,1)에서 샘플링해서 std에 곱해주고 mean과 더해주는 방법으로 샘플링을 직접 하는 것을 막는 방법이다. 이것을 사용하지 않으면 출력된 mean과 std에 대한 가우시안 분포에서 직접 샘플링을 해야 하는데 그렇게 되면 deterministic하지 않기 때문에 역전파가 불가하다.</li>
</ul>
<blockquote>
</blockquote>
<p>최소화해야하는 Loss Function은 아래 두 가지의 합으로 나타난다.</p>
<ol>
<li>Reconstrution Error의 식은 output이 베르누이 확률을 따른다고 가정하면 cross entropy식으로 나타낼 수 있다.</li>
<li>Regularization 식은 인코더를 통과한 확률이 우리가 가정한 정규분포에 가까워질 수 있도록 KL divergence를 최소화하기 위한 식으로 나타낼 수 있다.</li>
</ol>
<ul>
<li>VAE의 특징
Decoder가 최소한 학습 데이터는 생성해 낼 수 있게 된다.
Encoder가 최소한 학습 데이터는 잘 latent vector로 표현할 수 있게 된다.</li>
<li><blockquote>
<p>현재는 GAN이 나오면서 VAE는 인코더의 역할로 사용된다.</p>
</blockquote>
</li>
</ul>
<blockquote>
</blockquote>
<h2 id="adversarial-auto-encoder">Adversarial Auto Encoder</h2>
<p><img src="https://velog.velcdn.com/images/jj_style/post/d6c4e18a-b83a-4c06-946f-de9f59570b7d/image.png" alt="">
최적화란?
KL의 qΦ를 p(z)의 차이를 최소화하여 같아지게 만드는 것을 말한다.
KL Divergence의 최적화 방식이 GAN의 학습방법과 동일하다.</p>
<blockquote>
<blockquote>
<p>GAN에서 Traget distribution이 있을 때 generation의 분포가 target distribution과 같게 만들어주는 방식과 KL term의 학습방법이 같기 때문에 이를 GAN으로 대체하는 방법이 바로 AAE(Adversarial AutoEncoder)입니다.</p>
</blockquote>
</blockquote>
<p>P(prior)에서 만든 sample은 진짜 sample입니다.
q(GAN)에서 만든 sample은 가짜 sample입니다.
Discriminator에게 이상적인 sampling함수에서 생성된 값이 prior에 가깝게 요청한다.</p>
<blockquote>
<p>참고자료
<a href="https://www.youtube.com/watch?v=Rdpbnd0pCiI">https://www.youtube.com/watch?v=Rdpbnd0pCiI</a>
<a href="https://www.youtube.com/watch?v=YxtzQbe2UaE&amp;t=253s">https://www.youtube.com/watch?v=YxtzQbe2UaE&amp;t=253s</a>
<a href="https://www.youtube.com/watch?v=GbCAwVVKaHY">https://www.youtube.com/watch?v=GbCAwVVKaHY</a>
<a href="https://deepinsight.tistory.com/128#adversarial-autoencoder%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80?">VAE와 AAE의 차이 blog</a>
<a href="https://arxiv.org/abs/1511.05644">AAE논문</a>
<a href="https://arxiv.org/abs/1312.6114">VAE논문</a>
<a href="https://arxiv.org/abs/1406.2661">GAN논문</a>
<a href="https://simpling.tistory.com/34#:~:text=Reparameterization%20trick%EC%9D%80%20%24%5Cepsilon,%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%84%20%EB%A7%89%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%EB%8B%A4.">Reparametrization</a>
<a href="https://angeloyeo.github.io/2020/10/27/KL_divergence.html">KL divergence</a>
<a href="https://wiserloner.tistory.com/1137">Manifold Hypothesis</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Pytorch Framework 구조와 Custom Dataset & DataLoader]]></title>
            <link>https://velog.io/@jj_style/Pytorch-Framework</link>
            <guid>https://velog.io/@jj_style/Pytorch-Framework</guid>
            <pubDate>Tue, 21 Mar 2023 02:59:36 GMT</pubDate>
            <description><![CDATA[<h2 id="pytorch-framework-구조">Pytorch Framework 구조</h2>
<blockquote>
<blockquote>
<ul>
<li>필요한 라이브러리</li>
</ul>
</blockquote>
</blockquote>
<pre><code>import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
from torch.utils.data import Dataset, DataLoader 
from network import CustomNet
from dataset import ExampleDataset
from loss import ExampleLoss</code></pre><blockquote>
<blockquote>
<ul>
<li>Custom modeling</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>모델 생성</li>
</ul>
</blockquote>
</blockquote>
<pre><code>model = CustomNet()
model.train() #훈련모드</code></pre><blockquote>
<blockquote>
<ul>
<li>옵티마이저 정의</li>
</ul>
</blockquote>
</blockquote>
<pre><code>params = [param for param in model.parameters() if param.requires_grad]
optimizer = optim.Example(params, lr=lr)</code></pre><blockquote>
<blockquote>
<ul>
<li>손실함수 정의</li>
</ul>
</blockquote>
</blockquote>
<pre><code>loss_fn = ExampleLoss()</code></pre><blockquote>
<blockquote>
<ul>
<li>Custom Dataset &amp; DataLoader</li>
<li><blockquote>
<p>학습을 위한 데이터셋 생성</p>
</blockquote>
</li>
</ul>
</blockquote>
</blockquote>
<pre><code>dataset_example = ExampleDataset()</code></pre><p>-&gt; 학습을 위한 데이터로더 생성</p>
<pre><code>dataloader_example = DataLoader(dataset_example)</code></pre><blockquote>
<blockquote>
<p>Transfer Learning &amp; Hyper Parameter Tuning</p>
</blockquote>
<blockquote>
<ul>
<li>모델 학습</li>
</ul>
</blockquote>
</blockquote>
<pre><code>for e in range(epochs):
    for X,y in dataloader_example:
        output = model(X)
        loss = loss_fn(output, y)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()</code></pre><pre><code>

### 딥러닝을 할 때, 파이토치의 주요 과정 
&gt;
- 데이터 전처리하기 
- 데이터 불러오는 함수 생성하기 : Custom Dataset &amp; DataLoader
- 신경망 구성하기 : Custom Model
- 오차 함수 및 최적화 기법 선택하기
- 학습 및 추론 설정 및 실행


---

직접 모은 데이터를 학습시키려고 할 때 Dataset과 DataLoader를 구성해야한다. 혹은 데이터가 너무 커서 메모리에 한번에 올려서 학습을 하기 어려운 경우에도 사용한다.

## Custom DataSet


&gt;- Dataset의 기본 구성 요소 
map-style dataset
iterable dataset은 현재 쓰지 않는다.</code></pre><p>from torch.utils.data import Dataset
class CustomDataset(Dataset):
    def <strong>init</strong>(self,):
        pass
      def <strong>len</strong>(self,):
        pass
    def <strong>getitem</strong>(self,idx):
        pass</p>
<pre><code>&gt;&gt;
- \__init__ 메서드
일반적으로 해당 메서드에서는 데이터의 위치나 파일명과 같은 초기화 작업을 위해 동작합니다. 일반적으로 CSV파일이나 XML파일과 같은 데이터를 이때 불러옵니다. 이렇게 함으로서 모든 데이터를 메모리에 로드하지 않고 효율적으로 사용할 수 있습니다. 여기에 이미지를 처리할 transforms들을 Compose해서 정의해둡니다.
&gt;
&gt;&gt;
- \__len__ 메서드
해당 메서드는 Dataset의 최대 요소 수를 반환하는데 사용됩니다. 해당 메서드를 통해서 현재 불러오는 데이터의 인덱스가 적절한 범위 안에 있는지 확인할 수 있습니다.
&gt;
&gt;&gt;
- \__getitem__ 메서드
해당 메서드는 데이터셋의 idx번째 데이터를 반환하는데 사용됩니다. 일반적으로 원본 데이터를 가져와서 전처리하고 데이터 증강하는 부분이 모두 여기에서 진행될 겁니다. 
transform도 여기에서 적용함.

---
&gt; - DataLoader가 필요한 이유
직접적으로 데이터셋을 for 반복문으로 데이터를 이용하는건 많은 특성들을 놓칠 수 밖에 없습니다. 특히, 우리는 다음과 같은 특성들을 놓친다고 할 수 있습니다.
데이터 배치, 데이터 섞기, multiprocessing 를 이용하여 병렬적으로 데이터 불러오기 등의 특성을 가지고 있습니다.
torch.utils.data.DataLoader 는 반복자로서 위에 나와있는 모든 특성들을 제공합니다.
위의 특성들을 활용해서 DataLoader class는 전체 데이터를 batch size로 slice해서 mini batch를 만들어줄 수 있다.
batch기반의 딥러닝 학습을 도와준다.

- next(iter(DataLoader)를 통해 다음 값을 가져올 수 있습니다.

![](https://velog.velcdn.com/images/jj_style/post/2692d831-4daf-41ab-a8b3-492eed18e7f1/image.png)


## Custom DataLoader
</code></pre><p>DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,
           batch_sampler=None, num_workers=0, collate_fn=None,
           pin_memory=False, drop_last=False, timeout=0,
           worker_init_fn=None)</p>
<pre><code>



&gt;추가 학습할 내용 
sampler
collate_fn : sample list를 batch 단위로 바꾸기 위해 필요한 기능
zero-padding, 길이가 다른 데이터의 길이를 일정하게 만들어주기 위함
전체리하거나 수집한 dataset을 model에 feeding하기 위한 방법과 원하고자 하는 결과를 얻기 위해 데이터를 어떤 식으로 나눠서 학습을 진행할 것인가에 대한 고민이 필요하다.


&gt;참고자료
[사용자 정의 PYTORCH DATALOADER 작성하기](https://tutorials.pytorch.kr/recipes/recipes/custom_dataset_transforms_loader.html)
https://hulk89.github.io/pytorch/2019/09/30/pytorch_dataset/
https://subinium.github.io/pytorch-dataloader/
https://wikidocs.net/16068</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[RNN, BPTT 수식 유도]]></title>
            <link>https://velog.io/@jj_style/RNN-BPTT-%EC%88%98%EC%8B%9D-%EC%9C%A0%EB%8F%84</link>
            <guid>https://velog.io/@jj_style/RNN-BPTT-%EC%88%98%EC%8B%9D-%EC%9C%A0%EB%8F%84</guid>
            <pubDate>Tue, 14 Mar 2023 04:21:57 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h3 id="recurrent-neural-networks">Recurrent Neural Networks</h3>
<p>가변적인 길이의 시퀀스 데이터를 다룰 수 있는 신경망</p>
</blockquote>
<ul>
<li>RNN은 시간 별로 같은 weight를 공유한다.</li>
<li>시퀀스 데이터: 소리, 문자열, ...</li>
</ul>
<blockquote>
<p>RNN을 도식화하면..
<img src="https://cdn.mathpix.com/cropped/2023_03_16_2e9f311007910537dff4g-5.jpg?height=2529&width=5075&top_left_y=0&top_left_x=394" alt="">
$$
\begin{aligned}
&amp; O_{t}=w^{(2)} H_{t}+b^{(2)} \
&amp; a_{t}=w_{x} X_{t}+w_{H} H_{t-1}+b^{(1)} \
&amp; H_{t}=\sigma\left(a_{t}\right)
\end{aligned}$$</p>
</blockquote>
<ul>
<li>H: 잠재변수(상태변수), 시그마: 활성화함수, W: 가중치, b: 편향, t: 시간</li>
</ul>
<blockquote>
<h3 id="bptt">BPTT</h3>
<p>Back Propagation Through Time</p>
</blockquote>
<ul>
<li>각 time시리즈마다 존재하는 동일한 변수를 바꾼다.</li>
</ul>
<blockquote>
<p>수식 유도</p>
</blockquote>
<ul>
<li>목표 : Loss function을 출력과 잠재변수에 대해서 미분을 한 그래디언트를 구하는 것이 목표이다.<blockquote>
<p>$$\begin{aligned}
&amp; L=\sum_{t} l_{t}: \text { 각각의 layer 에서의 loss의 합 } 
\end{aligned}$$
Loss function은 각각의 시간 t에 따른 layer에서의 loss의 합으로 표현할 수 있다.</p>
<blockquote>
<p>Loss function을 출력으로로 편미분한 그래디언트를 구해보면
$$\begin{aligned}
&amp; \frac{\partial L}{\partial O_{t}}=\frac{\partial\left(l_{t}+\cdots+l_{T}\right)}{\partial O_{t}}=\frac{\partial\left(l_{t}+\cdots+l_{T}\right)}{\partial l_{t}} \cdot \frac{\partial l_{t}}{\partial O_{t}} \
&amp; =\frac{\partial l_{t}}{\partial O_{t}}
\end{aligned}$$
출력에 대한 그래디언트는 계산할 수 있다.
(Loss function과 출력에도 활성화 함수가 존재하더라도 미분가능하다.)</p>
</blockquote>
<blockquote>
<p>Loss function을 상태변수로 편미분한 그래디언트를 구해보면
$$
\begin{aligned}
&amp; \frac{\partial L}{\partial H_{t}}=\frac{\partial l_{t}}{\partial H_{t}}+\frac{\partial l_{t+1}}{\partial H_{t}}+\cdots+\frac{\partial l_{T}}{\partial H_{t}} \
&amp; =\frac{\partial l_{t}}{\partial O_{t}} \cdot \frac{\partial O_{t}}{\partial H_{t}}+\cdots+\frac{\partial l_{T}}{\partial H_{t}}
\end{aligned}$$
<img src="https://cdn.mathpix.com/cropped/2023_03_16_2e9f311007910537dff4g-6.jpg?height=140&width=1110&top_left_y=393&top_left_x=227" alt="">
$$
\begin{aligned}
&amp; =L^{\prime} w^{(2)}+\frac{\partial L_{t+1}}{\partial O_{t+1}} \cdot \frac{\partial O_{t+1}}{\partial H_{t+1}} \cdot \frac{\partial H_{t+1}}{\partial H_{t}}
\end{aligned}$$
<img src="https://cdn.mathpix.com/cropped/2023_03_16_2e9f311007910537dff4g-6.jpg?height=134&width=1223&top_left_y=684&top_left_x=77" alt="">
$$\begin{aligned}
[\frac{\partial l_{t+1}}{\partial H_{t}}+\cdots+\frac{\partial l_{T}}{\partial H_{t}} = \frac{\partial L_{t+1}}{\partial H_{t}}, \text {네모 박스}=\frac{\partial L_{t+1}}{\partial H_{t+1}}]\end{aligned}$$
$$\begin{aligned}
&amp; \delta=L^{\prime} w^{(2)}+\delta^{+} \frac{\partial H_{t+1}}{\partial H_{t}}
\end{aligned}$$</p>
</blockquote>
</blockquote>
</li>
</ul>
<blockquote>
<p>각각의 W, b에 대한 그래디언트 값은 활성화함수가 정해지면 연쇄법칙을 사용하여 구할 수 있고 이를 이용해서 BPTT를 수행할 수 있게 된다.</p>
</blockquote>
<ul>
<li>수식을 자세히보면 BPTT를 수행시에 t+1번째 부터 앞으로 그래디언트 값이 전달되면서 미분의 곱으로 이루어진 항이 존재하게 되는 것을 볼 수 있다.
e.g.나는 밥을 먹는다. 등의 시퀀스 데이터를 학습할 때 나라는 주어가 BPTT수행시에 사라질 수 있는데 이를 해결하기 위해 LSTM이나 GRU같은 모델을 사용하게 된다.</li>
</ul>
<blockquote>
<p>참고자료</p>
</blockquote>
<ul>
<li><a href="https://www.youtube.com/watch?v=4jgHzgxBnGY">https://www.youtube.com/watch?v=4jgHzgxBnGY</a> </li>
</ul>
<blockquote>
<p>유용한 도구</p>
</blockquote>
<ul>
<li>수기로 작성한 수식을 촬영 후에 PDF파일로 만들면 자동으로 latex형태로 변환해준다. 앞으로 종종 활용해보아야겠다.
<a href="https://mathpix.com/image-to-latex">https://mathpix.com/image-to-latex</a>
내 글씨를 알아보다니.. 신기하다</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[부스트캠프 AI Tech 5기]]></title>
            <link>https://velog.io/@jj_style/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-5%EA%B8%B0</link>
            <guid>https://velog.io/@jj_style/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-5%EA%B8%B0</guid>
            <pubDate>Tue, 07 Mar 2023 04:45:58 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>부스트캠프 AI Tech 5기에 참여하게 되었습니다.
학습하면서 새롭게 알게 된 내용이나 추가적으로 관심사항을 이 시리즈에 추가할 계획입니다.
주차별 회고록도 작성할 예정입니다.</p>
</blockquote>
<p>#
안녕하세요.
RecSys 과정에 참여하게 되었습니다.
##
강의 커리큘럼은 따라서 작성하되, 기본적인 내용보다 추가적으로 공부하거나 배운 내용을 새롭게 작성하려고 합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[데이터 사이언티스트가 되기 위한 방법을 Chat GPT에게 물어봤습니다.]]></title>
            <link>https://velog.io/@jj_style/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%ED%8B%B0%EC%8A%A4%ED%8A%B8%EA%B0%80-%EB%90%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EB%B0%A9%EB%B2%95%EC%9D%84-Chat-GPT%EC%97%90%EA%B2%8C-%EB%AC%BC%EC%96%B4%EB%B4%A4%EC%8A%B5%EB%8B%88%EB%8B%A4</link>
            <guid>https://velog.io/@jj_style/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%ED%8B%B0%EC%8A%A4%ED%8A%B8%EA%B0%80-%EB%90%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EB%B0%A9%EB%B2%95%EC%9D%84-Chat-GPT%EC%97%90%EA%B2%8C-%EB%AC%BC%EC%96%B4%EB%B4%A4%EC%8A%B5%EB%8B%88%EB%8B%A4</guid>
            <pubDate>Fri, 10 Feb 2023 08:11:47 GMT</pubDate>
            <description><![CDATA[<p>안녕하세요. 저는 데이터 사이언티스트로 직무를 정하고 취업 준비 중입니다.
최근 ChatGPT가 주목받고 있는데요.</p>
<p>여러 현직자의 인터뷰나 글을 읽고 관련 유튜브와 회사별 JD를 확인하며 공부 방향을 정해 공부하던 중에 여러 정보가 섞여서 어디서부터 해야 할지 막막한 상황이었습니다.
궁금한 것들을 ChatGPT에 물어본 내용을 정리 및 공유하려고 글을 작성하게 되었습니다.</p>
<p>작성된 글은 제 개인적인 생각도 담겨있습니다.
직접 해보시거나 영문 대답을 읽어보시길 바랍니다.</p>
<blockquote>
<p><strong>Chat GPT 링크</strong>
<a href="https://openai.com/blog/chatgpt/">https://openai.com/blog/chatgpt/</a></p>
</blockquote>
<blockquote>
<h3 id="데이터-사이언티스트란"><strong>데이터 사이언티스트란?</strong></h3>
<p><img src="https://velog.velcdn.com/images/jj_style/post/c7f3f199-bd54-4d6c-a817-b7c8c38f5eaf/image.PNG" alt=""></p>
</blockquote>
<p>데이터 사이언티스트는 빅데이터를 알고리즘과 프로그래밍을 통해 raw data를 비즈니스 의사결정에 도움을 주는 인사이트로 바꾸어줍니다.</p>
<p>데이터 사이언티스트는 일반적으로 수학, 통계, 컴퓨터 과학의 기초가 튼튼하며 머신러닝, 인공 지능 또는 데이터 시각화와 같은 하나 이상의 전문 분야를 가지고 있다.</p>
<p>특히 기술, 금융 등의 다양한 복잡한 문제 해결에 관여하는 경우가 많다.
(제가 자주 애용하는 해외 쇼핑몰에서는 소비자 맞춤 추천 서비스하기 위해 데이터 사이언티스트가 존재하며 해당 사이트의 데이터를 마음대로 마이닝 하지 못하게 이용 규칙에 명시해놓기도 하는 것을 보았습니다.) </p>
<p>데이터 사이언티스트는 기술적 기술뿐만 아니라 커뮤니케이션 및 협업 기술이 중요하다.
다른 부서의 요구 사항을 이해하고 데이터를 실행할 수 있는 해결책으로 변환한다.</p>
<p>데이터 사이언티스트 분야는 빠르게 성장하고 있으며, technical skill과 비즈니스 통찰력을 적절히 조합한 데이터 사이언티스트에 대한 수요가 높다.</p>
<blockquote>
<h3 id="데이터-사이언티스트가-되기-위해서-어떻게-해야-하는가">데이터 사이언티스트가 되기 위해서 어떻게 해야 하는가?</h3>
<p><img src="https://velog.velcdn.com/images/jj_style/post/4b6f97ce-eb7c-41db-8ed7-bd82cb4a61cf/image.PNG" alt=""></p>
</blockquote>
<p>데이터 사이언티스트가 되기 위한 몇 가지 방법</p>
<ol>
<li><p>수학 및 통계 분야에서 강력한 기초를 습득한다. <strong>확률, 통계, 선형 대수 및 미적분</strong>에 대한 확실한 이해는 데이터 작업에 필수적이다. 온라인 강좌를 듣거나 수학, 통계학 또는 컴퓨터 과학과 같은 관련 분야에서 학위를 받는 것을 고려해보자.</p>
</li>
<li><p>프로그래밍 언어 학습: 데이터 과학자들은 일반적으로 데이터에서 통찰력을 추출하기 위해 <strong>Python, R 또는 SQL</strong>과 같은 프로그래밍 언어를 사용한다. 이러한 언어 중 하나 이상을 숙지하고 정기적으로 코드를 작성하는 연습을 하십시오.</p>
</li>
<li><p>대규모 데이터셋 작업 경험: 여기에는 데이터 분석 프로젝트, <strong>캐글 대회</strong>에 참여하거나 개인 데이터 분석 프로젝트에 참여하는 것이 포함될 수 있습니다.</p>
</li>
<li><p><strong>머신러닝</strong>에 대한 전문성 확보: 머신러닝은 데이터 과학자들을 위한 핵심 도구이며, 예측 모델을 구축하는 데 사용되는 다양한 알고리즘과 기술을 이해하는 것이 중요하다. 여러분의 지식을 깊게 하기 위해 그 주제에 대한 수업을 듣거나 책을 읽는 것을 고려해보세요.</p>
</li>
<li><p>데이터 과학 프로젝트 포트폴리오 구축: <strong>실제 프로젝트에서 작업하고 결과를 포트폴리오</strong>로 보여줌으로써 기술을 시연합니다. 이를 통해 데이터 과학자로 고용되거나 프리랜서로 일할 수 있습니다.</p>
</li>
<li><p>현장의 <strong>최신 개발 정보</strong>를 확인하십시오: 데이터 과학 분야는 끊임없이 발전하고 있으므로 새로운 도구와 기술을 배우고 적응하는 것이 중요하다. 회의에 참석하고, 업계 블로그를 읽고, 다른 데이터 과학자와 연결하여 최신 상태를 유지하십시오.</p>
</li>
</ol>
<p>데이터 과학자가 되기 위해서는 시간과 노력이 필요하지만, 헌신과 노력으로 이 흥미롭고 수요가 많은 분야에서 성공하는 데 필요한 기술과 지식을 쌓을 수 있습니다.</p>
<blockquote>
<p>그동안 다양한 곳에서 관련 정보를 찾았었는데..  Chat GPT에 물어보니 내용도 알차고 필수적인 것들이 모두 포함되어 있네요!
더 자세한 정보는 찾아봐야겠고 대답을 너무 맹신하면 안 되겠지만 궁금한 것이 있고 검색이 어려울 때 물어보면 좋을 것 같습니다.</p>
</blockquote>
<p>관련 학습을 해나가면서 추가적인 궁금증이 생기면 다른 질문을 해보고 정리하여 포스팅하도록 하겠습니다.</p>
<p>끝까지 읽어주셔서 감사합니다 :-&gt;</p>
]]></description>
        </item>
    </channel>
</rss>