<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>상황파악</title>
    <link>https://otch80.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 12 May 2026 15:28:24 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>otch80</managingEditor>
    <item>
      <title>Opt Arch for SLM with Diffusion</title>
      <link>https://otch80.tistory.com/62</link>
      <description>&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #172b4d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/blog/codelion/optimal-model-architecture&quot;&gt;https://huggingface.co/blog/codelion/optimal-model-architecture&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1767588854954&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;The Optimal Architecture for Small Language Models&quot; data-og-description=&quot;I just don't think your depth-width results have enough samples for what you have tried to fit to them, it's like you tried to create a narrative that exactly fitted each one with no noise, but with 7 results and a complicated explanation it's like you ove&quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/blog/codelion/optimal-model-architecture&quot; data-og-url=&quot;https://huggingface.co/blog/codelion/optimal-model-architecture&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/JW1x8/hyZQ1dPomZ/TikKZPpkEC75tu34tHvPi1/img.png?width=1220&amp;amp;height=649&amp;amp;face=0_0_1220_649,https://scrap.kakaocdn.net/dn/oqOnd/hyZQ7LT0vB/tV5qUufc2LxMOfIY36MqwK/img.png?width=1220&amp;amp;height=649&amp;amp;face=0_0_1220_649,https://scrap.kakaocdn.net/dn/bRi3zC/hyZQUEISA1/ccWHowjgFnkgK6Yxdt8Ask/img.png?width=1775&amp;amp;height=873&amp;amp;face=0_0_1775_873&quot;&gt;&lt;a href=&quot;https://huggingface.co/blog/codelion/optimal-model-architecture&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/blog/codelion/optimal-model-architecture&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/JW1x8/hyZQ1dPomZ/TikKZPpkEC75tu34tHvPi1/img.png?width=1220&amp;amp;height=649&amp;amp;face=0_0_1220_649,https://scrap.kakaocdn.net/dn/oqOnd/hyZQ7LT0vB/tV5qUufc2LxMOfIY36MqwK/img.png?width=1220&amp;amp;height=649&amp;amp;face=0_0_1220_649,https://scrap.kakaocdn.net/dn/bRi3zC/hyZQUEISA1/ccWHowjgFnkgK6Yxdt8Ask/img.png?width=1775&amp;amp;height=873&amp;amp;face=0_0_1775_873');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;The Optimal Architecture for Small Language Models&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I just don't think your depth-width results have enough samples for what you have tried to fit to them, it's like you tried to create a narrative that exactly fitted each one with no noise, but with 7 results and a complicated explanation it's like you ove&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SLM을 위한 다양한 연구 중 하나&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;&quot;&gt;간단 요약&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #fcfcfc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;배경:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;제한된 파라미터(70M) 내에서 모델을 어떻게 설계할 것인가?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;통찰:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;실험 결과, 모델을 옆으로 넓히기(Wide)보다 위로 깊게(Deep) 쌓는 것이 지식 밀도를 높이는 데 유리함을 밝혀냄&lt;/li&gt;
&lt;li&gt;&lt;b&gt;핵심 수치:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;은닉층 차원(Hidden Dimension)은 최소&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;512&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이상이어야 하며, 레이어는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;32개&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이상 쌓았을 때 복합적인 추론 성능이 급격히 향상&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과&lt;/b&gt;: 모델을 깊게 쌓으면 GPT 방식으로는 너무 느려지는데, 이를 Diffusion 아키텍처로 해결함으로써 '높은 지능'과 '빠른 속도'를 동시에 잡음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;궁금증&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;div id=&quot;main-content&quot; style=&quot;background-color: #ffffff; color: #172b4d; text-align: start;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. SLM에서 너비(Width)보다 깊이(Depth)가 더 중요한 이유는 무엇인가?&lt;br /&gt;&lt;/b&gt;A.&amp;nbsp;동일한 파라미터 예산 내에서 레이어를 깊게 쌓는 것(예: 32개 레이어)이 모델의 복합 추론 능력을 높이는 데 유리함&lt;br /&gt;다만, Hidden Dimension이 특정 임계값(예: 512) 이상은 되어야 성능이 급격히 향상된다고 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. &quot;깊이&quot; 라는 접근이 왜 등장했는가?&lt;/b&gt;&lt;br /&gt;A. SLM의 성능을 극대화하려면 레이어 수가 많아져야 함. 하지만 깊어진 Layer 만큼 Forward Pass 비용이 비싸짐.&lt;br /&gt;이때, 기존 GPT 방식인 Auto Regression을 사용하면 속도 저하가 불가피함. 실험적으로 레이어 수와 성능이 관계가 있 의미가 있다는 것을 알았기에, 이를 해결하기 위해 병렬처리에 유리한 Diffusion 아키텍처를 제안함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q.&amp;nbsp;Diffusion 모델이 GPT보다 '병렬 처리'에 유리하다는 것은 어떤 의미인가?&lt;br /&gt;&lt;/b&gt;A. GPT는 다음 토큰을 만들 때 이전 토큰이 반드시 필요한 '시간적 직렬 구조'를 가짐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면, Diffusion은 문장 전체 위치(Matrix)의 노이즈를 한꺼번에 업데이트하는 '공간적 병렬 구조'를 가짐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 연산량은&lt;span&gt;&amp;nbsp;&lt;/span&gt;(레이어 수) &amp;times; (반복 횟수)인데,&lt;span&gt;&amp;nbsp;&lt;/span&gt;Diffusion은 모델이 깊어져도 전체 문장을 완성하는 데 필요한 반복 횟수(Sampling Steps)를 획기적으로 줄일 수 있어, 결과적으로 GPT보다 생성 속도가 빠름&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. Diffusion Model 이 병렬처리하기 위해서는 크기가 고정되어 있어야 하는가?&lt;/b&gt;&lt;br /&gt;A. 두 모델은 문장을 언제 끝낼지, 그리고 얼마나 길게 만들지를 결정하는 철학 자체가 완전히 다름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT: 내재적 신호에 의한 자율 종료 (Internal Signal)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문맥상 문장이 끝날 시점이 되면 모델이&amp;nbsp;[EOS]&amp;nbsp;를 출력. 시스템은 이 토큰을 확인하는 즉시 생성 종료.&lt;/li&gt;
&lt;li&gt;사용자가 제한을 두지 않는다면, 모델은 이론적으로 메모리가 허용하는 한 무한대로 토큰을 생성할 수 있음&lt;/li&gt;
&lt;li&gt;다만, 모델이 논리적 오류에 빠지면&amp;nbsp;[EOS]를 뱉지 못하고 비슷한 말을 무한히 반복하는 '무한 루프' 현상이 발생할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Diffusion: 외부 설정에 의한 고정 종료 (Fixed Budget)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자가 &quot;10번의 디노이징 스텝을 거쳐라&quot;라고 설정하면, 타임스텝이 0 되는 순간 연산이 종료. 모델은 주어진 '시간 예산' 안에서 최선을 다해 결과물을 닦아내는 방식.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;생성될 문장의 길이는 모델이 결정하는 것이 아니라, 처음에 투입한 노이즈 행렬(Matrix)의 크기에 의해 미리 결정됨. 128토큰 크기의 캔버스를 넣었다면, 모델은 딱 그만큼의 공간 안에서 그림을 완성함&lt;/li&gt;
&lt;li&gt;생성이 언제 끝날지 초 단위까지 정확히 예측할 수 있어, 실시간 서비스 운영 시 시스템 자원을 배분하고 최적화하는 데 압도적으로 유리함.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 왜 텍스트는 디퓨전이 어려웠나?&lt;/b&gt;&lt;br /&gt;A.&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;이산적 데이터(Discrete Data)의 난제: &lt;/b&gt;픽셀과 달리 텍스트는 딱딱 끊어지는 토큰 형태라 노이즈를 섞고 복원하는 과정에서 문법이 깨지기 쉬움.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;해결책 (Discrete Diffusion)&lt;/b&gt;: 억지로 벡터를 흐리게 만드는 가우시안 방식이 아니라, 단어를 가리거나(Masking) 무작위로 교체하는 방식을 최적화하여 언어의 이산적 특성을 극복함.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. GPT도 결국 Position Encoder를 사용하는데, 이는 토큰의 위치에 따른 의미를 파악하기 위함이다. 결국 각 토큰은 이산적이라기보다는 다른 관점에서의 '연결성'이 굉장히 중요하다는 것인데, 이 존재 자체가 Diffusion의 일종의 snapshot 방식과 유사한 것 아닌가?&lt;br /&gt;&lt;/b&gt;A.&amp;nbsp;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;인과관계의 엄격함&lt;/b&gt;:&amp;nbsp;GPT는 Position Encoder를 쓰면서도&amp;nbsp;Causal Masking을 통해 &quot;과거가 미래를 결정한다&quot;는 인과관계를 엄격히 학습하여 논리적 서사를 만듬&lt;/li&gt;
&lt;li&gt;&lt;b&gt;양방향 참조의 위험&lt;/b&gt;: 반면 Diffusion은 모든 토큰이 서로를 참조하는 양방향(Bidirectional) 구조라 전체 구조 파악에는 유리하지만, 아직 결정되지 않은 미래의 '노이즈'를 참고하다 보니 세밀한 인과 논리가 약해질 수 있음&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이동 경로의 문제:&lt;/b&gt; 연결성이 중요하다는 점은 같지만, GPT는 항상 의미 있는 '단어 점' 위를 이동(softmax)하고, Diffusion은 그 사이의 '의미 없는 빈 공간(유령 벡터 구역)'을 가로질러야 하므로 복원 과정이 더 까다롭다는 결론에 도달함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 임베딩 공간의 '의미 없는 빈 공간(Ghost Vector Area)'이란 무엇인가?&lt;/b&gt;&lt;br /&gt;A. 단어들은 고차원 벡터 공간(Embedding Space) 내의 특정 좌표, 즉 '점(Discrete Points)'으로 존재함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 '의미 없는 빈 공간'이란 단어와 단어 사이의 광활한 구역 중&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;어떤 단어(토큰)도 할당되지 않은 데이터의 공백 지대&lt;/b&gt;를 의미함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q.&amp;nbsp;왜 Diffusion에서 문제가 되는가?&lt;br /&gt;&lt;/b&gt;A.&amp;nbsp;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;이동 방식의 차이&lt;/b&gt;:&amp;nbsp;GPT는 매 단계 단어장 내의 확정된 점들로만 점프(Discrete Jump, tokenzier 내 softmax를 통한 확률적 샘플링)하며 이동하지만, Diffusion은 노이즈 상태에서 깨끗한 상태로 서서히 수렴(Denoising)하는 과정을 거침&lt;/li&gt;
&lt;li&gt;&lt;b&gt;경로의 이질성:&lt;/b&gt;&amp;nbsp;이 정제 과정에서 모델이 다루는 중간 단계의 벡터들은 '사과'도 아니고 '바나나'도 아닌, 두 단어 사이의 모호한 공간(유령 벡터 구역)을 지나게 됨&lt;/li&gt;
&lt;li&gt;&lt;b&gt;유령 벡터가 초래하는 문제점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;언어적 불연속성:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이미지 픽셀은 0.5(회색)라는 중간값이 시각적으로 의미를 갖지만, 언어 임베딩에서 '고양이'와 '자동차'의 중간 벡터값은 언어적으로 아무런 의미가 없는 쓰레기 값(Garbage Value)인 경우가 대부분&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복원 난이도 상승:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Diffusion 모델이 이 빈 공간에 머무는 시간이 길어질수록, 모델은 자신이 지금 어떤 문맥을 다루고 있는지 갈피를 잡지 못하게 되어 문법 붕괴나 할루시네이션(Hallucination)을 일으킬 확률이 급격히 높아짐&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 이걸 어떻게 해결하는가?&lt;/b&gt;&lt;br /&gt;A. Dhara-70M: Discrete Diffusion&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;메커니즘:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;원본 문장에서 특정 비율의 토큰을 고정된&lt;span&gt;&amp;nbsp;&lt;/span&gt;[MASK]&lt;span&gt;&amp;nbsp;&lt;/span&gt;토큰으로 가리거나, 아예 단어장(&lt;span&gt;$V$&lt;/span&gt;) 내의 다른 무작위 토큰으로 교체(Corruption)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;효과:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이 방식은 임베딩 공간 내에서 '사과'와 '배' 사이의 모호한 중간 좌표(유령 벡터)를 계산할 필요가 없게 만듭니다. 모델은 항상&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;'정확한 단어'&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;혹은 '명확한 [MASK] 신호'라는 이산적인 입력만을 받기 때문&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. Softmax를 사용한다는 것인지?&lt;/b&gt;&lt;br /&gt;A.&lt;br /&gt;&lt;b&gt;-&amp;nbsp;GPT의 Softmax:&lt;/b&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;현재의 맥락에서 다음에 올 단어 하나를 확정 지음&lt;br /&gt;&lt;/span&gt;&lt;b&gt;- Dhara의 Softmax:&lt;/b&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;현재 문장 전체에 흩어진&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;[MASK]&lt;span&gt;와 '무작위 토큰'들을 보고, 그 자리에 원래 있어야 할 진짜 단어가 무엇일지 확률 분포를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;추론&lt;br /&gt;&amp;nbsp; -&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Iteration:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;한 번의 Softmax로 끝내지 않고, 여러 스텝을 거치며&lt;span&gt;&amp;nbsp;&lt;/span&gt;[MASK]였던 자리들이 서서히 가장 높은 확률을 가진 실제 단어들로 채워짐&lt;br /&gt;&amp;nbsp; -&amp;nbsp;&lt;/b&gt;&lt;b&gt;경로 제어:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;모델의 입출력은 항상 단어장(&lt;span&gt;$V$&lt;/span&gt;)에 정의된 인덱스들에 대한 확률 분포로만 이루어짐&lt;br /&gt;&amp;nbsp; -&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;안전지대 유지:&lt;/b&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;모델이 연산하는 모든 단계에서 다루는 정보는 &quot;이 자리는 '사과'일 확률이 80%, '포도'일 확률이 20%다&quot;라는 식의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;단어 기반 정보임&lt;/b&gt;&lt;span&gt;. 따라서 어느 단어도 정의되지 않은 '유령 벡터 구역'에 발을 들일 이유가 사라짐&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;likes-and-labels-container&quot; style=&quot;background-color: #ffffff; color: #172b4d; text-align: start;&quot;&gt;
&lt;div id=&quot;likes-section&quot; style=&quot;color: #3f4c66;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/LLM</category>
      <category>Diffusion</category>
      <category>optimize</category>
      <category>SLM</category>
      <author>otch80</author>
      <guid isPermaLink="true">https://otch80.tistory.com/62</guid>
      <comments>https://otch80.tistory.com/62#entry62comment</comments>
      <pubDate>Mon, 5 Jan 2026 13:58:29 +0900</pubDate>
    </item>
    <item>
      <title>Neo4j Certifications 공부 - 1</title>
      <link>https://otch80.tistory.com/61</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;연초부터 프로젝트를 통해 공부한 Neo4j에 대한 자격증이 있음을 알게되었다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 자격증이 어떤 내용을 담고 있는지, 그리고 이를 취득하기 위해 어떤 준비를 해야 하는지 기록해보려 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 자격증은 Neo4j 아카데미에서 발급해고, 아래 링크를 통해 확인할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://graphacademy.neo4j.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://graphacademy.neo4j.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1762942724545&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Free, Self-Paced, Hands-on Online Training&quot; data-og-description=&quot;Learn how to build, optimize and launch your Neo4j project, all from the Neo4j experts.&quot; data-og-host=&quot;graphacademy.neo4j.com&quot; data-og-source-url=&quot;https://graphacademy.neo4j.com/&quot; data-og-url=&quot;https://graphacademy.neo4j.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/XTPI5/hyZMyb7dgB/MXxPHuRfq2NPZGhq6KDm2k/img.png?width=1195&amp;amp;height=675&amp;amp;face=0_0_1195_675,https://scrap.kakaocdn.net/dn/bfPlio/hyZMH7ZcQG/4vFfgwitrISkGYuNduPcqk/img.png?width=1195&amp;amp;height=675&amp;amp;face=0_0_1195_675&quot;&gt;&lt;a href=&quot;https://graphacademy.neo4j.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://graphacademy.neo4j.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/XTPI5/hyZMyb7dgB/MXxPHuRfq2NPZGhq6KDm2k/img.png?width=1195&amp;amp;height=675&amp;amp;face=0_0_1195_675,https://scrap.kakaocdn.net/dn/bfPlio/hyZMH7ZcQG/4vFfgwitrISkGYuNduPcqk/img.png?width=1195&amp;amp;height=675&amp;amp;face=0_0_1195_675');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Free, Self-Paced, Hands-on Online Training&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learn how to build, optimize and launch your Neo4j project, all from the Neo4j experts.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;graphacademy.neo4j.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span&gt;종류&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Neo4j cetification 은 총 2가지로 Neo4j Certified Professional 과 Neo4j graph Data Science Certification 이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2452&quot; data-origin-height=&quot;806&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EIuaC/dJMcah3PulY/PXuq2QvvQdgL2q5eGf3nBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EIuaC/dJMcah3PulY/PXuq2QvvQdgL2q5eGf3nBK/img.png&quot; data-alt=&quot;출처 : graphacademy&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EIuaC/dJMcah3PulY/PXuq2QvvQdgL2q5eGf3nBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEIuaC%2FdJMcah3PulY%2FPXuq2QvvQdgL2q5eGf3nBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2452&quot; height=&quot;806&quot; data-origin-width=&quot;2452&quot; data-origin-height=&quot;806&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 : graphacademy&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 자격증에 대한 전반적인 내용은 다음 링크에서 확인할 수 있었는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://neo4j.com/blog/developer/passing-two-neo4j-certification-exams/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://neo4j.com/blog/developer/passing-two-neo4j-certification-exams/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1762941499917&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Start Your Free Neo4j Certified Journey - Graph Database &amp;amp; Analytics&quot; data-og-description=&quot;With the online GraphAcademy, it's fun and easy to learn how to build graphs with Neo4j -- and get certified along the way.&quot; data-og-host=&quot;neo4j.com&quot; data-og-source-url=&quot;https://neo4j.com/blog/developer/passing-two-neo4j-certification-exams/&quot; data-og-url=&quot;https://neo4j.com/blog/developer/passing-two-neo4j-certification-exams/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b0F0WA/hyZMyiUupa/pC3kY4UmgyKyepIx1VjLv1/img.png?width=730&amp;amp;height=371&amp;amp;face=0_0_730_371,https://scrap.kakaocdn.net/dn/cZWLrl/hyZMugxgHG/80KJ73afw7YZqKYyxAEvJk/img.png?width=1024&amp;amp;height=768&amp;amp;face=0_0_1024_768,https://scrap.kakaocdn.net/dn/pmUZb/hyZNxCG0E3/1OHI3hNg6KC97nhiSN1jq0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://neo4j.com/blog/developer/passing-two-neo4j-certification-exams/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://neo4j.com/blog/developer/passing-two-neo4j-certification-exams/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b0F0WA/hyZMyiUupa/pC3kY4UmgyKyepIx1VjLv1/img.png?width=730&amp;amp;height=371&amp;amp;face=0_0_730_371,https://scrap.kakaocdn.net/dn/cZWLrl/hyZMugxgHG/80KJ73afw7YZqKYyxAEvJk/img.png?width=1024&amp;amp;height=768&amp;amp;face=0_0_1024_768,https://scrap.kakaocdn.net/dn/pmUZb/hyZNxCG0E3/1OHI3hNg6KC97nhiSN1jq0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Start Your Free Neo4j Certified Journey - Graph Database &amp;amp; Analytics&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;With the online GraphAcademy, it's fun and easy to learn how to build graphs with Neo4j -- and get certified along the way.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;neo4j.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 의 Professional 레벨과는 다르게 Graph DB에 대한 이해를 기반으로 한 내용으로, 입문 과정으로 보여진다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 자격증은 특이한 점이 있는데 바로 응시료가 무료라는 점이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 시험통과 커트라인은 80점으로, 해당 점수에 도달하지 못하면 24시간 이후에 재응시를 할 수 있다고 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;표를 통해 내용을 살펴보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 87px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 23.217%; height: 19px; text-align: center;&quot;&gt;&lt;b&gt;종류&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.1938%; height: 19px; text-align: center;&quot;&gt;&lt;b&gt;Neo4j Certified Professional&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; height: 19px; text-align: center;&quot;&gt;&lt;b&gt;Neo4j graph Data Science Certification&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 23.217%; height: 17px; text-align: center;&quot;&gt;난이도&lt;/td&gt;
&lt;td style=&quot;width: 35.1938%; height: 17px; text-align: center;&quot;&gt;초급 - 중금&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; height: 17px; text-align: center;&quot;&gt;중급 - 고급&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 23.217%; height: 17px; text-align: center;&quot;&gt;합격 컷트라인&lt;/td&gt;
&lt;td style=&quot;width: 35.1938%; height: 17px; text-align: center;&quot;&gt;80%&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; height: 17px; text-align: center;&quot;&gt;80%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 23.217%; height: 17px; text-align: center;&quot;&gt;제한시간&lt;/td&gt;
&lt;td style=&quot;width: 35.1938%; height: 17px; text-align: center;&quot;&gt;60분&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; height: 17px; text-align: center;&quot;&gt;60분&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 23.217%; height: 17px; text-align: center;&quot;&gt;문제수&lt;/td&gt;
&lt;td style=&quot;width: 35.1938%; height: 17px; text-align: center;&quot;&gt;80문제&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; height: 17px; text-align: center;&quot;&gt;40문제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 23.217%; text-align: center;&quot;&gt;문제유형&lt;/td&gt;
&lt;td style=&quot;width: 35.1938%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Graph 아카데미에서 제공하는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;recommendations&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #09090a; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;dataset 기반의 문제를 해결하기 위한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Cypher 작성&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #f5f6f6; color: #09090a; text-align: start;&quot;&gt;Neo4j Graph Data Science 라이브러리 및 워크플로우, 알고리즘 활용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 23.217%; text-align: center;&quot;&gt;재응시 조건&lt;/td&gt;
&lt;td style=&quot;width: 35.1938%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;24시간 뒤 재응시 버튼 활성화&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; text-align: center;&quot;&gt;좌동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 23.217%; text-align: center;&quot;&gt;응시비용&lt;/td&gt;
&lt;td style=&quot;width: 35.1938%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;무료&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; text-align: center;&quot;&gt;무료&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자격증의 난이도 보다는 많은 사람들이 Graph DB에 대해 인지도와 이해도를 높이기 위한 제도인 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 Certified Professional 취득을 위해 하나씩 공부해보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-7722921220342066&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/DB</category>
      <category>CERTIFICATIONS</category>
      <category>cypher</category>
      <category>graphdb</category>
      <category>KnowledgeGraph</category>
      <category>Neo4j</category>
      <category>그래프DB</category>
      <category>자격증</category>
      <category>지식그래프</category>
      <author>otch80</author>
      <guid isPermaLink="true">https://otch80.tistory.com/61</guid>
      <comments>https://otch80.tistory.com/61#entry61comment</comments>
      <pubDate>Wed, 12 Nov 2025 19:15:45 +0900</pubDate>
    </item>
    <item>
      <title>실무 속 수요예측 모델링 회고 - 1</title>
      <link>https://otch80.tistory.com/60</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;한참 LLM에 관심이 많은 요즘 ML에 대한 본질을 점점 잊어가는 기분이 듭니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재의 상황을 점검하기 위해 회고를 하며 놓치고 있는 것은 무엇인지, 예전에는 어떤 마음으로 일을 했었는지 되짚어보려 합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사족으로 데이터 사이언티스트로써 업무를 수행하는 것은 정말 많은 창의력과 에너지를 요구하는 것 같습니다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;쉽게 해결할 수 있는 다양한 방법이 있음에도 자존심 때문에 어려운 기술에 도전해보는것&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;어려운 문제지만 간단히 나아가는 방법&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 중간 타협점을 찾는것이 참 쉽지않습니다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;시작부터 다른길로 샜는데, 다시 집중해보겠습니다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;풀어야 할 문제&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 저는 유통에서의 수요예측 문제를 해결해야 했습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저에게 주어진 일은 명료했습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;물건을 팔기위해 발주를 넣어야 하는데, 얼만큼 주문을 넣어야 할까요?&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 많은 자영업자분들이 공감하실 딜레마일 것 같습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 이 문제를 어떻게 해결했는지 회상해보려 합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[문제 상황]&lt;br /&gt;&lt;br /&gt;매일 아침마다 각각의 상품들을 발주 넣고 있습니다. 이 많은 물건을 정확히 예측해서 발주를 넣는게 여간 어려운 일이 아닙니다.고객들이 많이 물건을 사줄때도 있고 그렇지 않을때도 있습니다.&lt;br /&gt;&lt;br /&gt;고객들이 물건을 구입하지 않으면 폐기처분을 해야 하는데, 이게 다 돈입니다. 그래서 무작정 많이 발주를 넣을 수 없습니다. &lt;br /&gt;그렇다고 너무 적게 발주를 넣으면 고객분들이 찾아오셨을때 물건을 구입하실 수 없습니다. &lt;br /&gt;빈손으로 돌아가는 상황이 반복되면 아무도 우리 가게를 찾지 않을 것 같습니다.&lt;br /&gt;&lt;br /&gt;다른 일들도 많은데 아침마다 이런 고민을 하는것이 가게를 운영하는 점에 있어서 큰 고충입니다. &lt;br /&gt;과하지도 않고 적지도 않은 적절한 수량만큼 정교하게 발주를 넣을 수 있으면 좋겠습니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 식료품에 대한 수요예측을 진행하다 보니 자연스레 유통기한에 대한 제약이 생겼습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 발주 이후 입고까지의 리드타임을 함께 고려해야 해서 어느정도의 시간 텀도 발생합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 분들과 함께 이 문제를 풀기위해 노력했지만 제 관점에서, 모델링을 위해 어떤식으로 문제를 해결하려 했는지 적어보겠습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 모델링을 위해서는 타겟값 Y가 있어야 합니다. 아마 이 값이 제가 풀어야 할 문제겠죠&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;수요예측 모델링 - 포스팅 버전.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJ081Z/dJMcaj8mpbn/luggw8vo3pMoIcnkuEX8p0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJ081Z/dJMcaj8mpbn/luggw8vo3pMoIcnkuEX8p0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJ081Z/dJMcaj8mpbn/luggw8vo3pMoIcnkuEX8p0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ081Z%2FdJMcaj8mpbn%2Fluggw8vo3pMoIcnkuEX8p0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;804&quot; height=&quot;452&quot; data-filename=&quot;수요예측 모델링 - 포스팅 버전.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주변에서 흔히 볼수있는 모습으로 설명해보겠습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유통기한이 당일 까지인 바나나를 발주를 넣는다고 가정해봅시다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주말에 발주를 넣은 12개의 바나나가 월요일에 도착해서 그날 총 10개가 팔렸습니다. 그러면 팔리지 않은 2개의 바나나는 폐기처분 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수요일에 18개를 발주 넣었지만 12개가 팔려서 폐기가 6개가 났습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이럴줄 알았으면 14개만 발주넣어서 폐기를 줄일껄 그랬습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과를 기반으로 문제에 접근하면 참 마음이 편합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 이렇게 될 줄 누가 알았을까요?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무도 모르기 때문에 확률적으로 접근할 수 밖에 없습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자, 폐기는 알겠는데 기대판매수량은 무엇일까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 월요일에 2번 나눠서 제품이 입고되기 때문에 발생하는 개념입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;수요예측 모델링 - 포스팅 버전.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q05Ui/dJMcaaXSQsU/981nC0oB1IAZQjkKHN4SXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q05Ui/dJMcaaXSQsU/981nC0oB1IAZQjkKHN4SXK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q05Ui/dJMcaaXSQsU/981nC0oB1IAZQjkKHN4SXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq05Ui%2FdJMcaaXSQsU%2F981nC0oB1IAZQjkKHN4SXK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;수요예측 모델링 - 포스팅 버전.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 그림을 통해 살펴보겠습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일요일 오전 중 바나나 12개 발주를 넣습니다. 해당 발주분은 다음날인 월요일에 2번에 나눠서 오전 6시, 오후 6시에 입고가 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 오전 6시에 입고된 6개의 바나나가 오후 6시 추가 입고가 되기 전에 품절이 되어 버리면, 다음 입고까지 물건을 팔고싶어도 팔 수 없는 상황이 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 시간동안 몇개를 더 팔수 있었을 것이라는 기대값을 시스템적으로 산출합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 값이 &quot;기대&quot; 판매수량 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게말해, &quot;발주 더넣을껄&quot; 이라는 속마음을 고급스럽게 표현했다고도 볼 수 있겠습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 조건만 놓고 본다면 상당히 당황스러울 수 밖에 없습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배송이 익일 자정에 도착하여 판매가 가능한 형태가 아닐뿐더러 현실적으로 판매에 대한 외부 제약이 많기 때문입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 이 외의 많은 요인으로 인해 많은 회사에서 수요예측은 가이드로써 활용되는 것 같습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;범위를 발주 수량에 대한 가이드로써 제공하고, 정확한 수량은 사용자에게 맡기는 시스템이 사실 가장 현실적일 것 같습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 서두에서 말한것 처럼, 쉽게 해결할 수 있음에도 어렵게 풀어나가는 것이 또 낭만아닐까요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회사에서는 반기지 않을 수 있지만, 이렇게 기가차는 문제를 또 해결한다면 그만큼 짜릿한게 어딨겠습니까&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저의 타겟값은 판매량이었습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 글에서 본격적으로 모델링에 대한 내용을 다뤄보겠습니다&lt;/p&gt;</description>
      <category>AI/시계열</category>
      <category>AI</category>
      <category>ML/DL</category>
      <category>수요예측</category>
      <category>시계열</category>
      <author>otch80</author>
      <guid isPermaLink="true">https://otch80.tistory.com/60</guid>
      <comments>https://otch80.tistory.com/60#entry60comment</comments>
      <pubDate>Sat, 1 Nov 2025 21:20:14 +0900</pubDate>
    </item>
    <item>
      <title>이반 일리치의 죽음 느낀점</title>
      <link>https://otch80.tistory.com/59</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;호랑이는 죽어서 가죽을 남기고 사람은 죽어서 이름을 남긴다.&lt;br /&gt;사람이 죽으면 이름으로 기억된다는 얘기다. 그 이름을 이루는 많은 기억과 감정들이 있을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이반 일리치는 다른 사람들에게 자리로 기억되었다. 그의 직책, 그의 터전, 그가 죽기 전까지 괴로워했던 방까지. 어떤 사람이었는지에 대한 기억은 세심하게 다루지 않는다. 이미 행동으로 다른 사람의 심정을 이해할 수 있기 때문일지도 모른다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;그렇다면&amp;nbsp;사람은&amp;nbsp;어떤&amp;nbsp;것으로&amp;nbsp;기억이&amp;nbsp;되는가?&amp;nbsp; &lt;br /&gt;&lt;br /&gt;나는&amp;nbsp;그사람이&amp;nbsp;진심을&amp;nbsp;다했던&amp;nbsp;무언가로&amp;nbsp;기억된다고&amp;nbsp;생각한다.&amp;nbsp;나눔을&amp;nbsp;실천했던&amp;nbsp;사람,&amp;nbsp;약탈과&amp;nbsp;강요를&amp;nbsp;일삼았던&amp;nbsp;사람,&amp;nbsp;조용히&amp;nbsp;지냈던&amp;nbsp;사람.&amp;nbsp;너무&amp;nbsp;당연하다.&amp;nbsp; &lt;br /&gt;그 사람의&amp;nbsp;행동이&amp;nbsp;모여&amp;nbsp;그&amp;nbsp;사람의&amp;nbsp;이름으로&amp;nbsp;불리운다.&amp;nbsp;하지만&amp;nbsp;생각해 보면&amp;nbsp;이름이라는&amp;nbsp;것은&amp;nbsp;너무나&amp;nbsp;한계가&amp;nbsp;명확하다.&amp;nbsp;동명이인이라는&amp;nbsp;단어가&amp;nbsp;존재하는 것만&amp;nbsp;봐도&amp;nbsp;알&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&lt;br /&gt;삶의&amp;nbsp;끝에서&amp;nbsp;주마등이&amp;nbsp;스쳐가는&amp;nbsp;것,&amp;nbsp;평범한&amp;nbsp;삶이&amp;nbsp;비극으로&amp;nbsp;치부되는&amp;nbsp;것,&amp;nbsp;옳다고&amp;nbsp;믿었던&amp;nbsp;사실들이&amp;nbsp;등을&amp;nbsp;져버리는&amp;nbsp;것,&amp;nbsp;그리고&amp;nbsp;죽음을&amp;nbsp;받아들임으로써&amp;nbsp;죽음에서&amp;nbsp;해방된다고&amp;nbsp;믿는&amp;nbsp;것.&amp;nbsp;사람의&amp;nbsp;생각은&amp;nbsp;너무나&amp;nbsp;어렵다.&amp;nbsp;그래서&amp;nbsp;철학이&amp;nbsp;깊은&amp;nbsp;것&amp;nbsp;같다.&amp;nbsp;복잡함&amp;nbsp;속에&amp;nbsp;단순함이&amp;nbsp;있다고&amp;nbsp;했던가.&amp;nbsp;진심으로&amp;nbsp;믿었던,&amp;nbsp;나라는&amp;nbsp;존재의&amp;nbsp;본연&amp;nbsp;그&amp;nbsp;자체였던&amp;nbsp;마음속의&amp;nbsp;소리.&amp;nbsp;그것은&amp;nbsp;정말&amp;nbsp;명료하고&amp;nbsp;단순하다.&amp;nbsp;물론&amp;nbsp;그&amp;nbsp;배경은&amp;nbsp;깊고&amp;nbsp;구불구불한&amp;nbsp;사실들이지만,&amp;nbsp;마음속에서&amp;nbsp;우러나온&amp;nbsp;농축된&amp;nbsp;소리는&amp;nbsp;그&amp;nbsp;어떤&amp;nbsp;문장보다&amp;nbsp;간결하다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;그렇다면&amp;nbsp;인생을&amp;nbsp;살아감에&amp;nbsp;있어서&amp;nbsp;정말로&amp;nbsp;귀&amp;nbsp;기울여야&amp;nbsp;하는&amp;nbsp;것은&amp;nbsp;복잡한&amp;nbsp;윤리와&amp;nbsp;이해관계가&amp;nbsp;아닌,&amp;nbsp;내&amp;nbsp;목소리가&amp;nbsp;아닐까.&amp;nbsp;스스로를&amp;nbsp;외면하는&amp;nbsp;사람이&amp;nbsp;진실로&amp;nbsp;남을&amp;nbsp;바라볼&amp;nbsp;수&amp;nbsp;있을까.&amp;nbsp;나아가&amp;nbsp;정말&amp;nbsp;삶을&amp;nbsp;정면으로&amp;nbsp;바라보며&amp;nbsp;살아갈&amp;nbsp;수&amp;nbsp;있을까.&amp;nbsp;결국&amp;nbsp;인생은&amp;nbsp;마지막&amp;nbsp;시점에&amp;nbsp;도달할&amp;nbsp;것이다.&amp;nbsp;인생이라는&amp;nbsp;한 가지&amp;nbsp;길을&amp;nbsp;걸어왔지만,&amp;nbsp;어떤&amp;nbsp;길을&amp;nbsp;걸어왔노라는&amp;nbsp;너무나&amp;nbsp;순수한&amp;nbsp;나의&amp;nbsp;어린 시절이&amp;nbsp;아닐까. &lt;br /&gt;&lt;br /&gt;그것이&amp;nbsp;이반&amp;nbsp;일리치가&amp;nbsp;혐오한&amp;nbsp;거짓을&amp;nbsp;드러낼&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;가장&amp;nbsp;저렴한&amp;nbsp;방법이&amp;nbsp;아닐까?&lt;/p&gt;</description>
      <category>독후감</category>
      <category>이반 일리치의 죽음</category>
      <category>주저리주저리</category>
      <author>otch80</author>
      <guid isPermaLink="true">https://otch80.tistory.com/59</guid>
      <comments>https://otch80.tistory.com/59#entry59comment</comments>
      <pubDate>Sat, 16 Aug 2025 17:00:34 +0900</pubDate>
    </item>
    <item>
      <title>[Q-learning] 데이터로 설명하기</title>
      <link>https://otch80.tistory.com/56</link>
      <description>&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-7722921220342066&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 추상적인 개념은 어렵다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 계산할 수 있는 데이터로 봐야 이해가 쉽다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;난 개발자니까&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;수식과 추상적인 개념만 가득했던 Q-learning을 임의의 값을 통해 어떻게 변화하는지 살펴보겠다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도대체 Q-learing이 뭐냐?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCARbT/btsC2zd6m3p/yJcl5HJK0Ha7o2GMk3e0p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCARbT/btsC2zd6m3p/yJcl5HJK0Ha7o2GMk3e0p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCARbT/btsC2zd6m3p/yJcl5HJK0Ha7o2GMk3e0p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCARbT%2FbtsC2zd6m3p%2FyJcl5HJK0Ha7o2GMk3e0p0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 하는 &lt;u&gt;&lt;b&gt;행동에 대한 가치&lt;/b&gt;&lt;/u&gt;가 얼마인지를 배우는 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Q = Quality&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;u&gt;가치를 배운다&lt;/u&gt;&lt;/b&gt; 라는게 정확히 무슨 뜻인지 알기위해  강화학습의 기본 개념을 다시 짚어보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btUX1g/btsC6phvcwO/0mXeHpppkcmTvN10Bc4gJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btUX1g/btsC6phvcwO/0mXeHpppkcmTvN10Bc4gJK/img.png&quot; data-alt=&quot; &quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btUX1g/btsC6phvcwO/0mXeHpppkcmTvN10Bc4gJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtUX1g%2FbtsC6phvcwO%2F0mXeHpppkcmTvN10Bc4gJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt; &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강화학습의 기본 골조는 &lt;u&gt;&lt;b&gt;상황이 주어지고&lt;/b&gt;&lt;/u&gt;, &lt;u&gt;&lt;b&gt;그에 맞는 행동을 하고&lt;/b&gt;&lt;/u&gt;, &lt;u&gt;&lt;b&gt;보상을 받으면서 배우는 것&lt;/b&gt;&lt;/u&gt;이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OX게임을 예시로 들면, 사람은 한줄에 동일한 기호를 채우면 이긴다는 것을 알고 있지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트는 알지못한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 알려준 행동에서 고르는 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 위 같은 경우는 로직자체가 잘못되어서 이상한 에러를 뱉은 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 중요한 것은 여러 시도를 하면서 그에따른 보상을 받는 과정을 반복하면서 배워나가는 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UpMEH/btsC4qHNc1i/6f2DskPygI2vrI9Pj3kml1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UpMEH/btsC4qHNc1i/6f2DskPygI2vrI9Pj3kml1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UpMEH/btsC4qHNc1i/6f2DskPygI2vrI9Pj3kml1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUpMEH%2FbtsC4qHNc1i%2F6f2DskPygI2vrI9Pj3kml1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쨋든 큰 틀은, 결국 &lt;u&gt;행동에 따른 평가를 받는다는 것&lt;/u&gt;이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트는 결국 이러한 평가를 받으면서 &lt;u&gt;&lt;b&gt;'&lt;/b&gt;&lt;b&gt;어떻게 하면 좋은 평가를 받을 수 있을지'&lt;/b&gt;&lt;/u&gt;를 고민해야 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dok2Gn/btsC6wAGMDB/7HnZ1kkCne36SYdrnnK0FK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dok2Gn/btsC6wAGMDB/7HnZ1kkCne36SYdrnnK0FK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dok2Gn/btsC6wAGMDB/7HnZ1kkCne36SYdrnnK0FK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdok2Gn%2FbtsC6wAGMDB%2F7HnZ1kkCne36SYdrnnK0FK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상태와 보상은 환경이 에이전트에게 주는 정보다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 에이전트가 고민해야 할 부분은 이렇게 볼 수 있을거다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;내가 한 행동이 보상을 받는데 과연 도움이 될까?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;도움이 된다는 것을 수치로 표현해서, 얼만큼의 가치가 있는 것일까?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그걸 계산하는 것이 가치함수인 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qaG4s/btsC836wlZk/uKmWbrLJh9VwWDjPrReMpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qaG4s/btsC836wlZk/uKmWbrLJh9VwWDjPrReMpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qaG4s/btsC836wlZk/uKmWbrLJh9VwWDjPrReMpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqaG4s%2FbtsC836wlZk%2FuKmWbrLJh9VwWDjPrReMpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행동의 가치를 계산하는 가치함수라는 존재는 인지했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 그 함수는 &lt;u&gt;어떤 식으로 가치를 평가&lt;/u&gt;한다는 것일까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘도 어김없이 등장하는 AI 선생님의 도움을 받아보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Q-learning을 위해서는 4가지 준비물이 필요하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;상태 및 보상을 알려주는 환경&lt;/u&gt;, &lt;u&gt;동작을 수행 할 에이전트&lt;/u&gt;, &lt;u&gt;에이전트가 수행할 행동&lt;/u&gt;, 그리고 &lt;u&gt;Quality (가치) 가 얼마인지 계산해서 &lt;b&gt;저장&lt;/b&gt;해둘 Q-Table&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NItIL/btsDaxFWAIL/07AYCMMYofo5kWQuHGUdPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NItIL/btsDaxFWAIL/07AYCMMYofo5kWQuHGUdPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NItIL/btsDaxFWAIL/07AYCMMYofo5kWQuHGUdPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNItIL%2FbtsDaxFWAIL%2F07AYCMMYofo5kWQuHGUdPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 선생이 &lt;b&gt;(1,1)&lt;/b&gt; 에서 시작해서 한칸씩 탐색해가며 &lt;b&gt;(4,4)&lt;/b&gt;로 이동하는 과정을 그려보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 난 몇가지 정의를 할 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 127px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 38px;&quot;&gt;에피소드&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 38px;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;AI 선생이 (4,4) 에 도착할 때 까지&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;(1 Epoch라고 보면 이해가 쉽다, 물론 이동 횟수를 제한하는것도 가능하다)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 38px;&quot;&gt;보상&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 38px;&quot;&gt;(4,4) 도착 : 10 &lt;br /&gt;이외 모든 행동 : -1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;학습률&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;0.1 (보상을 얼만큼 적용할 것인지, learning rate)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;Q-Table&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;모든 상태에 따른 행동의 가치 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;감가율&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;0.9 (0~1 사이의 값)&lt;br /&gt;미래시점으로 갈 수록 현재랑 얼만큼 동떨어저 있는 정도 &lt;br /&gt;(10년전 1억이랑 지금 1억이랑 같냐? 의 맥락)&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최초 (1,1) 상태에서의 수행할 수 있는 행동은 &lt;u&gt;&lt;b&gt;(상, 하, 좌, 우)&lt;/b&gt;&lt;/u&gt; 4가지이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 아무런 시도를 하지 않았기 때문에 보상을 받은 내용이 없으므로 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;0으로 초기화 된 값&lt;/b&gt;&lt;/span&gt;들이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 아무거나 고른다 (무작위 행동)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 이 행동 선택 단계에 &lt;u&gt;입실론 그리디&lt;/u&gt;가 사용된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(매 행동 선택 직전에 생성한 랜덤 값이, 사전에 정의한 입실론 값 보다 작으면 랜덤 선택.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 탐색을 조금 더 많이 함 = 다양하게 배움)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca1pJk/btsDbdU49hG/MJrnwqKC6AsRq1KJezOkKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca1pJk/btsDbdU49hG/MJrnwqKC6AsRq1KJezOkKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca1pJk/btsDbdU49hG/MJrnwqKC6AsRq1KJezOkKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fca1pJk%2FbtsDbdU49hG%2FMJrnwqKC6AsRq1KJezOkKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[에피소드 1] 첫번째 행동으로 &lt;u&gt;&lt;b&gt;'하'&lt;/b&gt;&lt;/u&gt; 를 골랐다고 가정하자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 AI의 위치는 (1,1) -&amp;gt; &lt;b&gt;(1,2)&lt;/b&gt; 로 이동했다 (인덱스 개념은 잠시 빼두자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때의 '하' 라는 행동의 상태값은 (1,2) 가 될 것이고, 그에 따른 &lt;b&gt;보상값은 -1&lt;/b&gt; 이다. ((4,4) 도달 외 모든 행동의 보상값은 -1)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최초 (1,1) 에서의 '하' 액션의 가치는 0 인 상태에서, -1의 보상을 받게되었을 때 &lt;u&gt;즉시 그 행동의 가치를 업데이트&lt;/u&gt; 할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 Q-learning이 어렵게 느껴졌던 이유가 Policy Gradient에서는 에피소드가 끝나고 일괄 업데이트를 했었는데 여기서는 step 단위로 이전 행동에 대한 평가를 한다는 차이가 있어서 였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그게 어떻게 가능한거지? 하는 생각이 머릿속을 떠나지 않았기 때문이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Update 로직은 아래와 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFNFpp/btsDd4DzCeW/xu3yh1jWWC25fJGJP3QMG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFNFpp/btsDd4DzCeW/xu3yh1jWWC25fJGJP3QMG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFNFpp/btsDd4DzCeW/xu3yh1jWWC25fJGJP3QMG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFNFpp%2FbtsDd4DzCeW%2Fxu3yh1jWWC25fJGJP3QMG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1370&quot; height=&quot;86&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;아래에서 상세히 설명할 테니&lt;/u&gt; 간단하게 &lt;b&gt;맥락&lt;/b&gt;만 훑고 가자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 &lt;b&gt;현재 가치 (현재 상태에서 수행한 행동의 가치)&lt;/b&gt; +&lt;b&gt;학습률&lt;/b&gt; x (&lt;b&gt;보상&lt;/b&gt; + &lt;b&gt;시간가치(0~1 값)&lt;/b&gt; x &lt;b&gt;미래가치&lt;/b&gt; - &lt;b&gt;현재 가치&lt;/b&gt;) 로직으로 업데이트가 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게말해 받은 &lt;u&gt;&lt;b&gt;보상을 보고 잘 했냐 못했냐를 즉각적으로 기록&lt;/b&gt;&lt;/u&gt;한다고 보면 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 예시로 돌아와서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca1pJk/btsDbdU49hG/MJrnwqKC6AsRq1KJezOkKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca1pJk/btsDbdU49hG/MJrnwqKC6AsRq1KJezOkKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca1pJk/btsDbdU49hG/MJrnwqKC6AsRq1KJezOkKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fca1pJk%2FbtsDbdU49hG%2FMJrnwqKC6AsRq1KJezOkKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0이었던 (1,1) 상태에서의 '하' 의 행동은 위 수식에 따라&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0 + 0.1 x (-1 + 0.9 x 0 + 0} = 0.1 x ( -1) = -0.1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의 값을 가진다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 위의 Q-Table의 (1,1)의 '하' 행동의 가치는 보상 -1을 받음으로써 &lt;b&gt;-0.1의 가치로 업데이트&lt;/b&gt; 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b29e0Y/btsC5X0esXS/pJjgugPkAM6mZ1YfixqxzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b29e0Y/btsC5X0esXS/pJjgugPkAM6mZ1YfixqxzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b29e0Y/btsC5X0esXS/pJjgugPkAM6mZ1YfixqxzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb29e0Y%2FbtsC5X0esXS%2FpJjgugPkAM6mZ1YfixqxzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 스텝에서 (1,2) 에서 보상이 0 밖에 없으니 랜덤으로 골랐는데 다시 (1,1)로 갔다고 가정하자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 아까와 같은 맥락으로 (1,2) 상태에서 '상' 행동의 가치는 -0.1로 업데이트 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc70IB/btsC75XNdSP/n5Y5AA5MSgAXKtzTO45YmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc70IB/btsC75XNdSP/n5Y5AA5MSgAXKtzTO45YmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc70IB/btsC75XNdSP/n5Y5AA5MSgAXKtzTO45YmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc70IB%2FbtsC75XNdSP%2Fn5Y5AA5MSgAXKtzTO45YmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1,1) 에서 (2,1) 로 이동하면 '우' 행동의 가치는 -0.1로 업데이트 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니 그럼 무슨 행동을 하기만 하면 마이너스로 되어버리는데, 언제 저 행동들이 좋은 행동이었는지 알 수 있는가 하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(4,4) 에 도착했을때 +10 만큼의 보상을 받는데, 이 보상이 계속 반복적으로 학습을 하면서 모든 상태에 영향을 미치게 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nsbeB/btsDdFwU2pj/h8SwKSIu5JS82tSgZhdYX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nsbeB/btsDdFwU2pj/h8SwKSIu5JS82tSgZhdYX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nsbeB/btsDdFwU2pj/h8SwKSIu5JS82tSgZhdYX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnsbeB%2FbtsDdFwU2pj%2Fh8SwKSIu5JS82tSgZhdYX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 (4,3) 상태에서 '하' 행동을 고르면서 &lt;u&gt;&lt;b&gt;(4,4) 에 도착&lt;/b&gt;&lt;/u&gt;했다고 가정하자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정동안 많은 액션을 수행했을 것이고 동시에 step 마다 Q-table이 업데이트 되었을 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;+10&lt;/b&gt;&lt;/span&gt;의 보상을 받았으니 (4,3) 상태에서 '하' 행동의 가치는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;0 + 0.1 x { 10 + 0.9 x 0 + 0} = 1&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(4,3) 상태에서 '하' 행동의 가치는 1로 업데이트 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(3,4) 상태에서 '우' 행동을 했다면 동일하게 1로 업데이트 되었을 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 &lt;u&gt;(4,4)에 도달함으로써 한번의 에피소드가 마무리&lt;/u&gt; 되었다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 이제 예시를 봤으니 Q-value가 어떻게 업데이트 되는지 조금 더 자세히 알아보겠다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PpDyv/btsC9bKc9NV/MLraDhP2bdHIUv5ask55m0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PpDyv/btsC9bKc9NV/MLraDhP2bdHIUv5ask55m0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PpDyv/btsC9bKc9NV/MLraDhP2bdHIUv5ask55m0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPpDyv%2FbtsC9bKc9NV%2FMLraDhP2bdHIUv5ask55m0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;똑같은 수식을 예시로 설명하기 위해 조금 중복적으로 표시했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째 New Q(s,a). &lt;u&gt;&lt;b&gt;업데이트 대상&lt;/b&gt;&lt;/u&gt; (&lt;b&gt;타겟값&lt;/b&gt;)이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;s 상태에서 a 행동을 하는 것의 가치를 업데이트 하려는 수식인 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아까의 예시로 보자면 (1,1) 상태에서의 '하' 행동인 &quot;0&quot; 이 업데이트 대상인 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째인 Q(s,a) 도 동일한 값이다. 왜냐하면 현재 값에다가 변화를 더해야 하기 때문이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 alpha는 학습률, 우리가 흔히 사용하는 learning rate 이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;R(s,a)는 내가 상태 s ((1,1)이었던 것) 에서 행동 a ('하' 행동 이었던 것) 을 했을 때, 환경이 에이전트에게 알려준 보상 값 (-1) 이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gamma는 감가율 (학습률) 로, 미래 가치를 감소시키기 위한 수치다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 강화학습의 기본적인 개념을 어느정도 이해했다면 여기까지의 컨셉은 어렵지 않을 것으로 생각된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7JroG/btsC6wuwcIB/aLOcURhpJgJOa69WY9XOUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7JroG/btsC6wuwcIB/aLOcURhpJgJOa69WY9XOUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7JroG/btsC6wuwcIB/aLOcURhpJgJOa69WY9XOUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7JroG%2FbtsC6wuwcIB%2FaLOcURhpJgJOa69WY9XOUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음 max Q ~ 이 부분이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기는 (1,1) 상태에서 '하' 행동을 하면 (1,2) 라는 &lt;u&gt;&lt;b&gt;새로운 상태&lt;/b&gt;&lt;/u&gt;가 되는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 역시 마찬가지로 에이전트가 수행할 수 있는 행동은 (상, 하, 좌, 우) 4가지이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;새로운 상태&lt;/span&gt;&lt;/b&gt;에서 할 수 있는 행동들의 가치들 중에서&lt;/u&gt; &lt;b&gt;가장 큰 가치값&lt;/b&gt;은 얼마인가?&quot;&amp;nbsp; 를 찾는 부분이다 (argmax 아님)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 내가 &lt;u&gt;다음상태에 진입했을 때 얻을 수 있는 최선의 행동은 어느정도 가치가 있냐&lt;/u&gt; 라는 부분이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 시간가치 x 미래가치 로 어느정도 현시점 가치로 환산을 한 후, 현재의 가치를 빼주는 것인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분의 정확한 이유는 논문을 안읽어서 잘 모르겠지만 감히 추측을 해보자면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;에이전트가 수행한 행동이 좋은 결과를 기대할 수 있는 상태로 안내해준 것이라면, 뭐가 되었든 칭찬받아 마땅하다&lt;/u&gt; 라는 것이 아닐까 싶다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(강화학습은 정답은 몰라도 해답은 안다 - 출처 : 내 생각)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 좋은 상황에서 죽을 쑤는 경우는 강화학습 뿐만 아니라 일상생활에서도 어렵지 않게 목격할 수 있기에 그렇게 이상한 논리는 아닐 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자, 결국 이러한 수식을 통해 어떤 상태에서의 행동의 가치는 계산할 수 있게 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTlLRo/btsC88OkUMa/vOtb7voz9XiUhtduqwp6rK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTlLRo/btsC88OkUMa/vOtb7voz9XiUhtduqwp6rK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTlLRo/btsC88OkUMa/vOtb7voz9XiUhtduqwp6rK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTlLRo%2FbtsC88OkUMa%2FvOtb7voz9XiUhtduqwp6rK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;86&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갑자기 뜬금없이 등장한 수식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;벨만 방정식이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 이해가 안되던 벨만 방정식이었는데, 다시 보니 이해가 될 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재의 가치는 현재의 정책을 따랐을때의 가치는 주어진 보상과 다음 시점의 값으로 계산할 수 있다는 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 돌아와서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 보면서 느껴지겠지만 Q-learning 역시 모든 상태에 대한 행동들이 매핑된 테이블이 필요하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;상태와 행동 이 많아지면 필요한 메모리가  늘어난다&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기에 바둑과 체스같은 경우의 수만 해도 Q-learning으로 풀어내기 어려운 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 메모리 문제를 해결한 것이 신경망을 사용한 Deep Q-learning 이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신경망을 쓰면 해결이 된다고 하는데, 아직까지는 공부중이라 원리는 잘 모르겠다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 해당 내용 역시 예시를 통해 이해하기 쉽게 설명하도록 하겠다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgEIYt/btsC9k8DjyF/2z0FGCNiry03rP7PZQkouk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgEIYt/btsC9k8DjyF/2z0FGCNiry03rP7PZQkouk/img.gif&quot; data-alt=&quot;Q-learning Episode Sample&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgEIYt/btsC9k8DjyF/2z0FGCNiry03rP7PZQkouk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cgEIYt/btsC9k8DjyF/2z0FGCNiry03rP7PZQkouk/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Q-learning Episode Sample&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buPglW/btsDdBviISj/6ZL6KpafQfX3DWkBbey3uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buPglW/btsDdBviISj/6ZL6KpafQfX3DWkBbey3uk/img.png&quot; data-alt=&quot;1 Episode 완료 이후 Q-Table&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buPglW/btsDdBviISj/6ZL6KpafQfX3DWkBbey3uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuPglW%2FbtsDdBviISj%2F6ZL6KpafQfX3DWkBbey3uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1800&quot; height=&quot;1200&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1 Episode 완료 이후 Q-Table&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;프레젠테이션2.gif&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GJA6I/btsD4mjipT8/VrHp5YKyGKj3YmKdOtU7Ak/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GJA6I/btsD4mjipT8/VrHp5YKyGKj3YmKdOtU7Ak/img.gif&quot; data-alt=&quot;최단경로 학습 후 Test&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GJA6I/btsD4mjipT8/VrHp5YKyGKj3YmKdOtU7Ak/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/GJA6I/btsD4mjipT8/VrHp5YKyGKj3YmKdOtU7Ak/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-filename=&quot;프레젠테이션2.gif&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;최단경로 학습 후 Test&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최단경로를 학습하는데 총 57번의 episode가 수행되었다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/강화학습</category>
      <category>AI</category>
      <category>MDP</category>
      <category>RL</category>
      <category>강화학습</category>
      <category>강화학습으로주식하기</category>
      <category>데이터</category>
      <category>벨만방정식</category>
      <category>제발쉽게좀가르치자</category>
      <author>otch80</author>
      <guid isPermaLink="true">https://otch80.tistory.com/56</guid>
      <comments>https://otch80.tistory.com/56#entry56comment</comments>
      <pubDate>Tue, 9 Jan 2024 01:52:14 +0900</pubDate>
    </item>
    <item>
      <title>Toy Proj. 강화학습으로 주식하기</title>
      <link>https://otch80.tistory.com/54</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DdmYY/btsCK6WjqZf/zAerkRSjXu7akjav9shOvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DdmYY/btsCK6WjqZf/zAerkRSjXu7akjav9shOvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DdmYY/btsCK6WjqZf/zAerkRSjXu7akjav9shOvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDdmYY%2FbtsCK6WjqZf%2FzAerkRSjXu7akjav9shOvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-7722921220342066&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제 인생 가치관입니다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 근무시간에 열심히 일을 해서 투자금을 마련하고, 컴퓨터는 제가 일하는 동안 주식을 돌려서 제 돈을 불려주는 아름다운 공생관계를 구축하는 것이 이 프로젝트의 목표입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Proj Due Date&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;향후 12주간 프로젝트를 진행할 예정입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마감일자가 되면 어떻게든 마무리 짓고 다음 프로젝트로 개선하는 방향으로 마무리 할 겁니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Proj Goal&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;강화학습의 이론을 토대로 동작하는 모델을 만든다&lt;/li&gt;
&lt;li&gt;모델이 주식 거래를 한다&lt;/li&gt;
&lt;li&gt;이걸 24시간 돌리는 환경을 만든다 (내가 잘때 미주를 할 수 있게끔)&lt;/li&gt;
&lt;li&gt;(돈을 번다)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 적었지만 나름의 마일스톤인 셈이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;목표 수익률&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ML에서 분류 모델의 성능을 평가하기 위한 지표로 AUC 스코어를 쓰는데, 핵심은 이거다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자고로 ML을 썻다면 '랜덤으로 돌려도 너보다는 잘맞추겠다' 라는 소리를 듣는건 부끄럽게 생각해야 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 맥락으로 나는 내가 직접 거래한 주식의 수익률을 목표 수익률로 잡겠다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lcyxR/btsCOAbiu8k/9HUTgsyCpnp7TeHumg1GdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lcyxR/btsCOAbiu8k/9HUTgsyCpnp7TeHumg1GdK/img.png&quot; data-alt=&quot;ROC Curve&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lcyxR/btsCOAbiu8k/9HUTgsyCpnp7TeHumg1GdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlcyxR%2FbtsCOAbiu8k%2F9HUTgsyCpnp7TeHumg1GdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;395&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;568&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ROC Curve&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;1286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EyCr6/btsCG12zwWk/5Nh7R3ZEonI4BOJt8MFbl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EyCr6/btsCG12zwWk/5Nh7R3ZEonI4BOJt8MFbl0/img.png&quot; data-alt=&quot;당당하게 올려보는 수익률&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EyCr6/btsCG12zwWk/5Nh7R3ZEonI4BOJt8MFbl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEyCr6%2FbtsCG12zwWk%2F5Nh7R3ZEonI4BOJt8MFbl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;437&quot; height=&quot;338&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;1286&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;당당하게 올려보는 수익률&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;23년 1년이 안되는 시간동안 굴려본 자산의 수익률은 6.56% 정도 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각보다 볼륨이 컸던 시장의 상승세와 비교해본다면 랜덤이나 마찬가지라고 생각되기 때문에 이보다 좋은 비교 지표는 없다고 본다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고로 이 프로젝트가 끝나면 내 RL 모델은 나에게 적어도 투자금의 6.56%는 순 이익으로 돌려줘야 할 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적다보니 깨달았는데 갑자기 반말을 하고 있었다. 계속 하겠다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;먼저 할거&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 기술쟁이 중에 자기 기술로 돈 벌어보겠다는 사람이 한둘이 아닐거다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고로 이미 잘 만들어둔 선행연구를 참고해서 어떤 방식으로 접근을 했는지 조사한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1676&quot; data-origin-height=&quot;1110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzhLj2/btsCK80T8iA/iQ4wS2lQlRsCztfWUu80hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzhLj2/btsCK80T8iA/iQ4wS2lQlRsCztfWUu80hk/img.png&quot; data-alt=&quot;출처 - DBPia&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzhLj2/btsCK80T8iA/iQ4wS2lQlRsCztfWUu80hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzhLj2%2FbtsCK80T8iA%2FiQ4wS2lQlRsCztfWUu80hk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;619&quot; height=&quot;410&quot; data-origin-width=&quot;1676&quot; data-origin-height=&quot;1110&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 - DBPia&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꽤 빡빡한 조건을 걸었는데도 벌써 읽을 자료가 14개나 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 구글 스칼라에 검색하면 더 나올거 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 영어가 아직 익숙하지 않으니 국내 논문을 읽어보고 방향을 정할 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 논문을 읽으려는 목적은 3가지를 얻기 위해서다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;논문을 읽어서 얻으려는 것&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;접근법&lt;/li&gt;
&lt;li&gt;사용 알고리즘&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;step 1. 접근법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회사에서 데이터 분석과 모델링을 반복하다보니 얻게된 지식이 있는데, 남이 잘 만들어 둔 방법을 요긴하게 써먹는게 아주 효과적이라는 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 내가 얻으려고 하는 접근법은 이렇다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;어떻게 거래해야 가장 이득인가 (전량, 분할, ...)&lt;/li&gt;
&lt;li&gt;포트폴리오 구성 방안 (KOSPI, KOSDAQ, NASDAQ, ETF, ...)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 몇가지만 읽어 봤을 때, 거래 방식에 대해서는 대부분 전량 매매를 선택한 것 같았다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 에이전트가 할 수 있는 행동을 단순화 시켜서 학습을 잘 하는 방안에 초점을 맞춘 것 같다 (매수, 매도, 대기)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포트폴리오 구성 방안은 대부분 국내 주식을 기준으로 KOSPI 상위 종목을 선택한 것 같았다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 내가 기준으로 삼은 수익률은 미주이기 때문에 조금 차이가 있을 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;step 2. 사용 알고리즘&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강화학습에는 다양한 방법론이 존재한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 크게는 모델 기반이냐 정책 기반이냐로 나뉜다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 대부분 주식시장을 모델링 할 여유는 없으니 정책 기반으로 하지 않았을까 싶다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 Policy Gradient냐 Q-learning이냐로 구분될 것 같은데, 사실 둘다 아직 잘 몰라서 왜 이걸 선택했는지는 바로바로 알기는 어려울 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러니까 이번 프로젝트를 하면서 이론 공부도 하고, 돈도 벌고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아주 얻어갈 내용이 많을 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 글은 읽은 논문 위주로 정리할 계획이다&lt;/p&gt;</description>
      <category>AI/강화학습</category>
      <category>AI</category>
      <category>강화학습</category>
      <category>오토트레이딩</category>
      <category>자동화</category>
      <category>주식</category>
      <author>otch80</author>
      <guid isPermaLink="true">https://otch80.tistory.com/54</guid>
      <comments>https://otch80.tistory.com/54#entry54comment</comments>
      <pubDate>Thu, 28 Dec 2023 00:07:05 +0900</pubDate>
    </item>
    <item>
      <title>제발 좀 쉽게 가르치자 - 강화학습 1편</title>
      <link>https://otch80.tistory.com/53</link>
      <description>&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-7722921220342066&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부하다 너무 화가나서 다시 글을 써본다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대체 왜 강화학습을 쉬운 말로, 수식 없이, 이해되기 쉽게 설명하는 사람이 왜 한명도 없나&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(물론 이전 내 설명자료 포함. 그래서 더 화남)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수식으로 설명하면 명확하기 때문에 이 분야를 공부하는 사람들의 스타일이 아닐 수 있는건 이해하는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;취미로 한번 해볼까 하는 사람들이 진입하기에는 너무 숨이 막힌다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나처럼 멍청한 사람을 쉽게 가르치는 사람이 도대체가 왜 한명도 없냐 이말이야&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;덧셈 뺄셈 하다가 갑자기 미분가르치는데 중간 내용 어디갔냐 하면 수식을 보면 된단다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 무슨 소리야 대체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 내가 최대한 추리고 추리면서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;내용 다 틀려먹더라도 일단 이해가 되기 쉽게 적고&lt;/b&gt;&lt;/u&gt;&lt;/span&gt; &lt;u&gt;&lt;b&gt;더 공부하면서 틀린 부분을 수정&lt;/b&gt;&lt;/u&gt;해가야 겠다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니 공부도 일단 재미가 있어야 할 거 아니냐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 뭐 연구자들만 하는 분야로 두기엔 너무 아깝다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어차피 입문용으로 다룰 내용이라 편하게 음슴체로 쓰겠음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회사 퇴근하고 스터디하고 있는데 그때 쓴 ppt 가져와서 설명하겠음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(내용이 많이 틀릴 수 있음)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ppt 만들때 신인류 채널을 아주 많이 참고했음 (내용이 알차기 때문에 추천)&lt;/p&gt;
&lt;figure id=&quot;og_1696846511648&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;profile&quot; data-og-title=&quot;신인류&quot; data-og-description=&quot;우충완과 홍석준의 신경과학과 인공지능의 유별난 만남&quot; data-og-host=&quot;www.youtube.com&quot; data-og-source-url=&quot;https://www.youtube.com/@neuroai_shininryu&quot; data-og-url=&quot;https://www.youtube.com/channel/UC4yLLoaFX0H6VHUpjf588AQ&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/blSdzE/hyT9Ci2OOs/6gnmhT8GwASIthcmGtm9wK/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900,https://scrap.kakaocdn.net/dn/M8IGM/hyT9x3aFci/pDvZpvj9Lw5VI8LSwZUXxk/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900&quot;&gt;&lt;a href=&quot;https://www.youtube.com/@neuroai_shininryu&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.youtube.com/@neuroai_shininryu&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/blSdzE/hyT9Ci2OOs/6gnmhT8GwASIthcmGtm9wK/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900,https://scrap.kakaocdn.net/dn/M8IGM/hyT9x3aFci/pDvZpvj9Lw5VI8LSwZUXxk/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;신인류&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;우충완과 홍석준의 신경과학과 인공지능의 유별난 만남&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.youtube.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dEkzSP/btsxib4nMn0/2qFh26v1TEocGrKW7dNhhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dEkzSP/btsxib4nMn0/2qFh26v1TEocGrKW7dNhhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dEkzSP/btsxib4nMn0/2qFh26v1TEocGrKW7dNhhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdEkzSP%2Fbtsxib4nMn0%2F2qFh26v1TEocGrKW7dNhhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 강화학습에서 쓰는 용어는 일반 (비)지도학습 할때 쓴 용어랑 조금 의미가 다름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐가 다른지는 읽다보면 느낌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갑자기 이게 왜 이렇게 되는거? 할때가 많음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/voNqK/btsxH1SHA9I/7Enk2Gjugb3Uikyipfh6a1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/voNqK/btsxH1SHA9I/7Enk2Gjugb3Uikyipfh6a1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/voNqK/btsxH1SHA9I/7Enk2Gjugb3Uikyipfh6a1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvoNqK%2FbtsxH1SHA9I%2F7Enk2Gjugb3Uikyipfh6a1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 여러 모델들이 발전하면서 다양한 방법론이 나왔듯이 RL 도 여러개가 나옴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 보면 첫 분기점 용어가 조금 이상함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Model이 없는 RL, Model에 기반한 RL&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kxj4T/btsxkgLjPd2/OLBY9kvKPbR6Zw5UWv0sRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kxj4T/btsxkgLjPd2/OLBY9kvKPbR6Zw5UWv0sRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kxj4T/btsxkgLjPd2/OLBY9kvKPbR6Zw5UWv0sRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkxj4T%2FbtsxkgLjPd2%2FOLBY9kvKPbR6Zw5UWv0sRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델이 없으면 뭘 학습한다는 거지? 싶음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXIiQn/btsxiez3Pe9/fQwkQtLKD2bNCa8r4pnlL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXIiQn/btsxiez3Pe9/fQwkQtLKD2bNCa8r4pnlL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXIiQn/btsxiez3Pe9/fQwkQtLKD2bNCa8r4pnlL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXIiQn%2Fbtsxiez3Pe9%2FfQwkQtLKD2bNCa8r4pnlL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 말하는 Model이란 가상 시뮬레이션으로 이해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 무슨소리냐 하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RSa6w/btsxtVFAoiV/Y1vfZcIpcGsUj1j86Vie10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RSa6w/btsxtVFAoiV/Y1vfZcIpcGsUj1j86Vie10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RSa6w/btsxtVFAoiV/Y1vfZcIpcGsUj1j86Vie10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRSa6w%2FbtsxtVFAoiV%2FY1vfZcIpcGsUj1j86Vie10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;real world에서 행동하고 보상받고 하는게 Model-Free&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가상 시뮬레이션 안에서 행동하고 보상받고 하는게 Model-Based&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBNSG6/btsxkB2P0sg/KVtT7vVpgihRfXEhMFoj9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBNSG6/btsxkB2P0sg/KVtT7vVpgihRfXEhMFoj9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBNSG6/btsxkB2P0sg/KVtT7vVpgihRfXEhMFoj9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBNSG6%2FbtsxkB2P0sg%2FKVtT7vVpgihRfXEhMFoj9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤걸 배우냐의 차이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Model을 배우는 것은 실제와 비슷한 환경을 구축하고, 그 환경에서 어떻게 하는지 배우기 때문에 더 복잡함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 왜 시뮬레이션을 만드냐 궁금할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EfraR/btsxkB9y2CW/HmsTiOFnvOKVFZk1MldiM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EfraR/btsxkB9y2CW/HmsTiOFnvOKVFZk1MldiM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EfraR/btsxkB9y2CW/HmsTiOFnvOKVFZk1MldiM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEfraR%2FbtsxkB9y2CW%2FHmsTiOFnvOKVFZk1MldiM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 실험하고 싶은 환경을 조금씩 바꿔가면서 모델을 다양한 환경에 노출시키고, 많은걸 학습시키기 위함임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자율주행 모델을 만들겠다고 비오는 고속도로에서 200km씩 밟을수는 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 Model-Based는 어려우니 Model-Free 부터 공부하겠음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 강화학습을 위해서는 뭐가 필요하냐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxPQUn/btsxrXcPJcB/JmpBYFVQ6WrGc2QrSIGau0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxPQUn/btsxrXcPJcB/JmpBYFVQ6WrGc2QrSIGau0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxPQUn/btsxrXcPJcB/JmpBYFVQ6WrGc2QrSIGau0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxPQUn%2FbtsxrXcPJcB%2FJmpBYFVQ6WrGc2QrSIGau0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 우리가 학습시킬 (혼자 알아서 행동할) 에이전트가 필요하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 에이전트가 동작할 환경이 필요함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sVZr4/btsxUbUQZMu/fUpEkoDXAlqGl1zIzTgTSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sVZr4/btsxUbUQZMu/fUpEkoDXAlqGl1zIzTgTSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sVZr4/btsxUbUQZMu/fUpEkoDXAlqGl1zIzTgTSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsVZr4%2FbtsxUbUQZMu%2FfUpEkoDXAlqGl1zIzTgTSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 학습시키길 원하는 에이전트가 환경에서 다양한 활동을 하면서 여러 보상을 받고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최고의 성과를 내는 과정을 반복하면서 똑똑해지는 것임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 동작하는 것은 에이전트 이지만 나무를 주는것은 환경이 주는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런걸 계속 돌리면 언젠간 엔드드래곤 타임어택도 봇이 세우지 않을까 싶음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 에이전트가 어떻게 공부를 하는 것이냐 하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;같은 카드뽑기.gif&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bujeJs/btsxtXXHyAb/q8PGzIUnYMfalKlVRTf1f0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bujeJs/btsxtXXHyAb/q8PGzIUnYMfalKlVRTf1f0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bujeJs/btsxtXXHyAb/q8PGzIUnYMfalKlVRTf1f0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bujeJs/btsxtXXHyAb/q8PGzIUnYMfalKlVRTf1f0/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-filename=&quot;같은 카드뽑기.gif&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 하는 거임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하면서 가르쳐주고 배우고 무한반복 (원하는 성능 나올때 까지)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 여기까지 하고 더 자세한건 천천히 하겠음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/강화학습</category>
      <category>AI</category>
      <category>RL</category>
      <category>강화학습</category>
      <category>흥미붙이기</category>
      <author>otch80</author>
      <guid isPermaLink="true">https://otch80.tistory.com/53</guid>
      <comments>https://otch80.tistory.com/53#entry53comment</comments>
      <pubDate>Mon, 9 Oct 2023 19:22:44 +0900</pubDate>
    </item>
    <item>
      <title>파이썬과 케라스로 배우는 강화학습 #2. MDP와 벨만 방정식</title>
      <link>https://otch80.tistory.com/52</link>
      <description>&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-7722921220342066&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;MDP 구성요소&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 내용에서 MDP 구성요소로 상태,행동,보상을 설명했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금 더 자세히 설명하자면 상태, 행동, 보상함수, 상태 변환 확률, 감가율 총 5개의 요소로 구성되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;상태 (State)&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상태와 행동은 에이전트가 현재 환경안에서 어떤 상태에 놓여있는지 (위치는 어디인지, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;지금 어디로 이동하고 있는지, &lt;/span&gt;주변에 바람은 어떻게 부는지 등) 같은 관찰 가능한 상태의 집합 ($S$) 이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1004&quot; data-origin-height=&quot;1006&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu37mV/btssgDQWcU0/9rw45STKiPIa8td8MFfk1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu37mV/btssgDQWcU0/9rw45STKiPIa8td8MFfk1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu37mV/btssgDQWcU0/9rw45STKiPIa8td8MFfk1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu37mV%2FbtssgDQWcU0%2F9rw45STKiPIa8td8MFfk1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;501&quot; data-origin-width=&quot;1004&quot; data-origin-height=&quot;1006&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서 설명하는 예시를 가져왔다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리드월드에서 상태값은 좌표값이다. (왜 (1,1) 우측이 (1,2) 가 아니라 (2,1) 인지는 모르겠다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5x5 행렬이 있다고 했을 때, 그리드월드의 상태 집합은 $S = {(1,1),(1,2),(1,3),...,(5,5)}$ 로 표시할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트는 시간에 따라 25개의 상태의 집합 안에 있는 상태를 탐험하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간 $t$ 일때의 상태는 $S_t$ 로 나타낸다. 현재 빨간 사각형의 초기 위치는 $s_0 = (1,1)$ 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;행동 (Action)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 상태 $S_t$에서 할 수 있는 가능한 핸도으이 집합 $A$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 &lt;u&gt;에이전트가 할 수 있는 행동은 모든 상태에서 같다.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예시에서 그리디월드 내 에이전트가 수행할 수 있는 행동은 $A = \{up, down, left, right\}$ 인 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VYxQu/btssgm9OOvW/PPCJBpXp0dLU4yg9o7yyP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VYxQu/btssgm9OOvW/PPCJBpXp0dLU4yg9o7yyP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VYxQu/btssgm9OOvW/PPCJBpXp0dLU4yg9o7yyP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVYxQu%2Fbtssgm9OOvW%2FPPCJBpXp0dLU4yg9o7yyP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;343&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;보상 함수 (Reward Function)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;환경이 에이전트한테 주는 보상값을 계산하는 함수.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$R^a_s = E[R_{t+1}|S_t = s, A_t = a]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$t$ 시점의 상태 &lt;span style=&quot;background-color: #ffc9af;&quot;&gt;$S_t = s$&lt;/span&gt; 에서 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;$A_t=a$&lt;/span&gt; 를 수행했을 때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(위 예시로 들면 (1,1) 에서 $right$ 행동을 수행했을 때)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 받을 수 있는 보상이 얼마인지에 대한 기대값을 계산해주는 것이 보상함수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZ7rLn/btssvZTfJ91/ZwINSMBzSvfSYJUMSuNkF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZ7rLn/btssvZTfJ91/ZwINSMBzSvfSYJUMSuNkF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZ7rLn/btssvZTfJ91/ZwINSMBzSvfSYJUMSuNkF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZ7rLn%2FbtssvZTfJ91%2FZwINSMBzSvfSYJUMSuNkF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;343&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예시에서는 $S_t$ 에서 $Right$ 이라는 $action$을 했기 때문에 +1 이라는 보상을 얻은 것이고, 만약 $Down$ 이라는 $action$을 했다면 -1의 보상을 얻었을 것이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기대값이란 무엇이고, 왜 기대값을 사용하는 걸까?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책의 설명을 빌리자면 기대값이란 일종의 평균이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예) 주사위를 굴렸을때의 기대값&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$기대값 = 1 \times \frac{1}{6} + 2 \times \frac{2}{6} + 3 \times \frac{3}{6} + 4 \times \frac{4}{6} + 5 \times \frac{5}{6} + 6 \times \frac{6}{6} = \frac{21}{6}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 해석하는게 맞는지 모르겠지만 주사위를 굴리는 시도는 3.5 의 기대값을 가진다고 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이처럼 $Agent$ 가 $S_t$ 에 $A_t$ 를 수행했을 때 보상함수는 받을 것이라 예상되는 숫자를 $E (Expectation)$ 를 알려주고, 이를 통해 $Agent$ 가 학습해가는 것이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;왜 보상함수는 기대값으로 표현할까?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서는 '보상을 에이전트에게 주는 것은 &lt;b&gt;환경&lt;/b&gt;이고, 환경에 따라서 &lt;u&gt;&lt;b&gt;같은 상태에서 같은 행동을 취하더라도 다른 보상&lt;/b&gt;&lt;/u&gt;을 줄 수도 있습니다' 라고 설명하고있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보상이라는 것은 에이전트가 판단하는 것이 아니라 환경이 알려주는 것이기 때문에 이 행동이 좋다 나쁘다를 알 수 없고,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느정도 학습한 모델을 가지고 다른 상황에 두게 된다면 또 다른 결과가 나타날 수 있기때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 &lt;u&gt;모든것을 고려해서 보상함수를 기대값으로 표현&lt;/u&gt;한다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 '환경에 따라 보상이 다르다' 라는 표현을 어드벤처 게임에서 문을 여는 행동을 스토리 진행을 위함이지만, FPS 에서 문을 여는 것은 총 맞을수도 있는 행동으로 이해했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특이한 점은 $R^a_s$ 는 $s$ 상태일때 $a$ 라는 액션을 한다면 얻게되는 $R_{t+1} (reward)$ 의 $E (Expectation)$ 값을 알려주는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$t$&lt;/b&gt; 시점이 아닌 &lt;u&gt;&lt;b&gt;$t+1$&lt;/b&gt;&lt;/u&gt; 시점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행동을 한 시점과 보상의 시점이 다른 이유는 보상을 에이전트가 알고 있는 것이 아니고 &lt;u&gt;&lt;b&gt;환경&lt;/b&gt;이 알려주는 것이기 때문&lt;/u&gt;이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;상태 변환 확률&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 상태가 변한다는 것은 에이전트가 수행한 행동이 온전히 이루어 졌을때를 가정한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 현실처럼 변수가 많은 환경이라면 내가 수행하고자 하는 동작이 100% 생각대로 이뤄지지 않을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 부분을 고려하는 것이 &lt;b&gt;상태 변환 확률&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 기철이는 집에 가야하는데 바람이 너무 강하게 불어 앞으로 가기도 힘든 상황이라면, 우리가 상상했던 &lt;b&gt;집에 도착한 상태&lt;/b&gt;가 되기 위해 &lt;b&gt;1초 뒤 앞으로 한걸음 나아간다&lt;/b&gt; 라는 행동이 온전히 이뤄지지 않을 수 있다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7eRI8/btssxF1e1VM/pf8gA1VkDAATG0CopJ7NuK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7eRI8/btssxF1e1VM/pf8gA1VkDAATG0CopJ7NuK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7eRI8/btssxF1e1VM/pf8gA1VkDAATG0CopJ7NuK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7eRI8%2FbtssxF1e1VM%2Fpf8gA1VkDAATG0CopJ7NuK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;625&quot; height=&quot;350&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 수식으로 표현했을 때 아래와 같이 나타낼 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$P^a_{SS'} = P [S_{t+1} = s' | S_t = s, A_t = a]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$t$ 시점인 상태 $s$에서 $a$ 를 수행했을 때, $t+1$ 시점에 $S'$으로 변할 확률을 $P^a_{SS'}$로 나타낸 것이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;감가율 (Discount Factor)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;할인율이라고도 불리는 감가율의 개념은 동일한 의미를 지닌다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돈의 가치는 시간에 따라 다르다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미래의 가치는 현재의 가치보다 낮을 수 밖에 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기에 가치를 일정부분 충당하기 위해 은행에서는 예금이자라는 방식으로 운용을 하고있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보상역시 비슷한 개념으로 작용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 너무 배가고파 쓰러질 지경이라면, 당장 라면을 끓이기 위해 냄비 하나만 빠르게 씻는게 모든 설거지를 한번에 다 끝내고 물을 올리는 것 보다 보상이 큰 행동일 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 같은 보상이라면 시간이 지날수록 가치가 줄어든다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감가율은 $\gamma$ [감마] 로 표현하고, 0 ~ 1 사이의 값을 가진다 (시간이 지날수록 줄어들어야 하니까 1보다 크면 안되고, 0보다 작으면 보상의 크기를 계산하는 문제가 아니게 된다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\gamma \in [0,1]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 시점 $t$ 로부터 $k$ 가 지난 후의 보상을 $R_{t+k}$ 라고 했을때 감가율을 고려한다면 이렇게 표현할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\gamma^{k-1} R_{t+k}$$&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1690&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj4QP3/btssquGhsQ5/V4REOE30Dlm13vInQ0ers1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj4QP3/btssquGhsQ5/V4REOE30Dlm13vInQ0ers1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj4QP3/btssquGhsQ5/V4REOE30Dlm13vInQ0ers1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj4QP3%2FbtssquGhsQ5%2FV4REOE30Dlm13vInQ0ers1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1690&quot; height=&quot;406&quot; data-origin-width=&quot;1690&quot; data-origin-height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정책&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;모든 상태에서 에이전트가 할 행동&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;벌써부터 머리가 아프다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상태는 $\pi$ 로 나타내고, $Input : s (상태) \rightarrow Output : a (행동)$ 인 일종의 함수다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서는 이렇게 설명한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;에이전트가 강화핛브을 통해 학습해야 할 것은 수많은 정책 중에서 최적 정책입니다. 최적 정책은 각 상태에서 단 하나의 행동만을 선택합니다. 하지만 에이전트가 학습을 하고 있을 때는 정책이 하나의 행동많을 선택하기 보다는 확률적으로 여러 개의 행동을 선택할 수 있어야 합니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 할 수 있는 액션들은 (보편적으로) 이미 정해져있다. 내가 (3,4) 위치에서 위로 가야할지, 아래로 가야할지, 어디로 가야하는지를 이미 계산이 되어 있다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강화학습을 위해선 모든 것이 다 수식으로 정의가 되어야 모델이 학습할 수 있기 때문에 정책 역시 수식으로 표현이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \pi(a|s) = P[A_t = a | S_t =s ] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 수식을 책에서는 이렇게 표현한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;시간 $t$에 $S_t = s$ 에 에이전트가 있을 때 가능한 행동 중에서 $A_t = a$ 를 할 확률을 나타냅니다&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러니까 내가 (3,4)에서 각 행동별로 어떤 행동을 할지 확률을 계산한다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$Up$일 확률 30% $Down$일 확률&amp;nbsp; 15% $Right$일 확률 10% $Left$일 확률 45% 이런식으로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 이 확률들은 어떻게 알 수 있었을까&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 가치함수를 통해 알게되는데, 가치함수는 받을 것이라 예상하는 보상을 알려주는 역할을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;가치함수 (Value Function)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 확인해야 할 부분을 짚어보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;보상은 $t$ 시점에 $a$ 액션을 한 이후, 환경이 알려주는 $t+1$ 시점의 정보&lt;/li&gt;
&lt;li&gt;즉, 시간 $t$에 대한 보상은 $R_{t+1}$&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일련의 보상들을 단순하게 합하면 아래와 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$R_{t+1} + R_{t+2} + R_{t+3} + R_{t+4} + R_{T+5} + \ ...$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이전에 설명한 감가율 (Discount Factor) 이 고려되어야 시점에 대한 최선의 행동을 더욱 정확히 판단할 수 있게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감가율을 적용한 보상들의 합을 표시하면 아래와 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3} + \gamma^3 R_{t+4} + \gamma^4 R_{t+5} \ ...$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시점에 해당하는 감가율을 고려하여 합한 보상을 $G_t$ (반환값, Return) 라고 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반환값을 수식으로 표현해보면 위 식을 그대로 사용한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3} \ ...$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반환값 $G$는 에이전트가 실제로 환경을 탐험하며 받은 보상들을 정산한 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를들어 목표까지 $t=1$ 에서부터 $t=5$ 까지 총 5번의 step을 수행했다면 아래와 같이 표현할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ G_1 = R_2 + \gamma R_3 + \gamma^2 R_4 + \gamma^3 R_5 + \gamma^4 R_6 $$ $$ G_2 = R_3 + \gamma R_4 + \gamma^2 R_5 + \gamma^3 R_6 $$ $$ G_3 = R_4 + \gamma R_5 + \gamma^2 R_6 $$ $$ G_4 = R_5 + \gamma R_6 $$ $$ G_5 = R_6 $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$G_1$ 값에 $R_2$ 부터 $R_6$ 까지의 값이 더해지는 이유는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총 5번의 $step$을 수행했기 때문에 나중에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;정산&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;하는 시점에서 살펴본 것이기 때문이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아, 내가 $t=1$ 일때 부터 $t=5$ 일때 까지의 보상들을 더해보니 $G_1$ 이라는 값이 됐구나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이때 감가율이 고려가 되고, 보상은 $t+1$의 값이니까 $R_6$ 까지 표현)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 $t=2$ 일때 부터 $t=5$ 까지의 보상들을 더해보니 $G_2$가 되었구나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 계산을 한 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 정산을 하는 방법은 step이 다 끝난 이후 (에피소드가 종료된 후) 알 수 있다 (뭔가 기존 ML의 Epoch 같은 느낌이 든다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 반드시 그럴 필요는 없다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확한 데이터를 사용하는것은 좋지만, 경험해야 할 단계가 너무 많다면 조금 고민이 될 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상대적으로 정확도가 낮더라도 현재의 정보를 토대로 행동하는 것이 나을 때가 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트도 모든 상황을 직접 경험해서 보상을 받지 않더라도, 아 이상황에서는 이렇게 하면 보상을 어느정도로 받겠구나 라는걸 예측할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;정확히 말하자면 어떤 상태에 있으면 앞으로 얼마의 보상을 받을 것인지에 대한 기댓값을 고려해 볼 수 있습니다. 그것이 바로 가치함수입니다. 간단하게 기댓값은 반환값의 기댓값으로 표현됩니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ v(s) = E[G_t|S_t=s]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$v$가 소문자인 이유는 확률변수가 아니라 특정 양을 나타내는 값이기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 가치함수는 에이전트가 가지고 있는 값이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러니까 내가 배가 고픈상태인데, 배가 부르면 기분이 좋겠다 (보상) 라고 한다면 우리는 그 상태가 되기 위해 밥을 먹는 행동을 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 배가부르기 위해 지금 당장 밥 먹는게 잘못된 선택일 수도 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서는 옷 쇼핑하는 예시를 들었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옷을 볼때도 괜찮을 것 같아서 샀지만 막상 입어보면 아닌 것 처럼 실패를 할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 고민하는 과정을 반복해서 하다보면 결국 기대가 정확해지기 때문에 괜찮다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트 또한 가치함수를 통해 어떤 상태가 좋을지 판단한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로 받을 보상에 대한 기댓값인 가치함수는 아래 수식으로 표현할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ v(s) = E[R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} \ ... | S_t = s] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 식(가치함수)을 반환값 $G$의 형태로 표현하면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ v(s) = E[R_{t+1} + \gamma (R_{t+2} + \gamma R_{t+3} \ ...) | S_t = s] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ v(s) = E[R_{t+1} + \gamma G_{t+1} | S_t = s] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$t$ 시점의 보상은 $R_{t+1}$ 인 것을 기억하자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 한가지 고민해야 할 부분은 $G_{t+1} = R_{t+2} + \gamma R_{t+3} \ ...$ 인 부분인데,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$G$는 실제로 단계를 진행해보고 알게된 보상값들의 정산이라고 했지만 이 식에서는 예상값 (&lt;u&gt;&lt;b&gt;기대값&lt;/b&gt;&lt;/u&gt;) 이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 앞으로 받을 보상에 대한 기댓값인 가치함수로 표현할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$G_{t+1} \rightarrow v(S_{t+1})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ v(s) = E[R+{t+1} + \gamma v(S_{t+1}) | S_t = s] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현 시점의 가치함수를 다음 시점의 가치함수로 표현하는 것을 보니 무한급수 같은 느낌도 든다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 수식은 정책을 고려하지 않은 기대값이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 지금 사용하고 있는 정책을 접목했을때의 예상 기대값을 표현하면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ v_{\pi}(s) = E_{\pi}[R_{t+1} + \gamma v_{\pi}(S_{t+1} | S_t = s] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 벨만 기대 방정식 $(Bellman Expectation Equation)$ 이 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자는 이 식을 아래와 같이 표현했다&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;벨만 기대 방정식은 &lt;b&gt;현재 상태&lt;/b&gt;의 가치함수 $(v_\pi (s))$ 와 &lt;b&gt;다음 상태&lt;/b&gt;의 가치함수 $(v_\pi (S_{t+1})$ 사이의 &lt;b&gt;관계&lt;/b&gt;를 말해주는 방정식입니다. &lt;u&gt;강화학습은 벨만 방정식을 어떻게 풀어나가느냐의 스토리입니다.&lt;/u&gt;&lt;/blockquote&gt;</description>
      <category>AI/강화학습</category>
      <author>otch80</author>
      <guid isPermaLink="true">https://otch80.tistory.com/52</guid>
      <comments>https://otch80.tistory.com/52#entry52comment</comments>
      <pubDate>Sat, 26 Aug 2023 21:11:03 +0900</pubDate>
    </item>
    <item>
      <title>파이썬과 케라스로 배우는 강화학습 #1. 개요</title>
      <link>https://otch80.tistory.com/51</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;참고자료 - &lt;a href=&quot;https://wikibook.co.kr/reinforcement-learning/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://wikibook.co.kr/reinforcement-learning/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1693270978406&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;books.book&quot; data-og-title=&quot;파이썬과 케라스로 배우는 강화학습: 내 손으로 직접 구현하는 게임 인공지능&quot; data-og-description=&quot;&amp;ldquo;강화학습을 쉽게 이해하고 코드로 구현하기&amp;rdquo; 강화학습의 기초부터 최근 알고리즘까지 친절하게 설명한다! &amp;lsquo;알파고&amp;rsquo;로부터 받은 신선한 충격으로 많은 사람들이 강화학습에 관심을 가지&quot; data-og-host=&quot;wikibook.co.kr&quot; data-og-source-url=&quot;https://wikibook.co.kr/reinforcement-learning/&quot; data-og-url=&quot;https://wikibook.co.kr/reinforcement-learning/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/doew01/hyTL9uKVMV/OYxrfaF4ETkKj9TXiVBhYk/img.jpg?width=458&amp;amp;height=605&amp;amp;face=0_0_458_605,https://scrap.kakaocdn.net/dn/gVD8o/hyTL5MD2D1/B6vkBzkh8d8OkjPcI4v9Rk/img.jpg?width=511&amp;amp;height=2502&amp;amp;face=0_0_511_2502,https://scrap.kakaocdn.net/dn/2b7Fm/hyTL4NID0E/XsaOgNuOuyNvkPKRVdnDG1/img.jpg?width=303&amp;amp;height=400&amp;amp;face=0_0_303_400&quot;&gt;&lt;a href=&quot;https://wikibook.co.kr/reinforcement-learning/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://wikibook.co.kr/reinforcement-learning/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/doew01/hyTL9uKVMV/OYxrfaF4ETkKj9TXiVBhYk/img.jpg?width=458&amp;amp;height=605&amp;amp;face=0_0_458_605,https://scrap.kakaocdn.net/dn/gVD8o/hyTL5MD2D1/B6vkBzkh8d8OkjPcI4v9Rk/img.jpg?width=511&amp;amp;height=2502&amp;amp;face=0_0_511_2502,https://scrap.kakaocdn.net/dn/2b7Fm/hyTL4NID0E/XsaOgNuOuyNvkPKRVdnDG1/img.jpg?width=303&amp;amp;height=400&amp;amp;face=0_0_303_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;파이썬과 케라스로 배우는 강화학습: 내 손으로 직접 구현하는 게임 인공지능&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;강화학습을 쉽게 이해하고 코드로 구현하기&amp;rdquo; 강화학습의 기초부터 최근 알고리즘까지 친절하게 설명한다! &amp;lsquo;알파고&amp;rsquo;로부터 받은 신선한 충격으로 많은 사람들이 강화학습에 관심을 가지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;wikibook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--&amp;gt; 설명이 친절하게 잘 되어 있다고 느낌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--&amp;gt; 앞으로 이 책을 통해 공부한 내용들을 정리할 예정임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--&amp;gt; 쓰다보니 책의 표현이 너무 찰떡이라 적절한 대체제가 떠오르지 않아&amp;nbsp; 책에 있는 표현과 예시를 그대로 옮기는 경우가 많이 생겼는데 행여나 문제가 된다면 수정할 예정&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;강화학습?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 배우지 않았지만 직접 시도하면서 행동과 그 결과로 나타나는 좋은 보상 사이의 상관관계를 학습하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게말해, &lt;u&gt;하나씩 시도해보면서 좋은 보상이 나타나는 방법을 익히는 것&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;머신러닝과 강화학습&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  머신러닝&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기계가 일일이 코드로 명시하지 않은 동작을 데이터로부터 학습해서 실행할 수 있도록 하는 알고리즘을 개발하는 연구분야, 아서 사무엘 (1959)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 데이터를 기반으로 이것저것 해보면서 얻게되는 보상을 통해 (간접적으로 정답의 역할을 함, 지도/비지도 학습과의 차이) &lt;u&gt;보상을 얻게 하는 행동을 점점 많이 하도록 학습함&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;에이전트 (Agent)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강화학습을 통해 스스로 학습하는 대상. &lt;br /&gt;환경 (동작할 공간) 에 대한 사전지식이 없는 상태에서 학습을 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dncIWG/btsryscCCqa/uuKNrVMbLuInvNadxkj3Bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dncIWG/btsryscCCqa/uuKNrVMbLuInvNadxkj3Bk/img.png&quot; data-alt=&quot;강화학습의 기본 메커니즘&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dncIWG/btsryscCCqa/uuKNrVMbLuInvNadxkj3Bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdncIWG%2FbtsryscCCqa%2FuuKNrVMbLuInvNadxkj3Bk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;293&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;강화학습의 기본 메커니즘&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강화학습은 사람처럼 &lt;u&gt;&lt;b&gt;환경과 상호작용&lt;/b&gt;&lt;/u&gt;을 하면서 스스로 학습하는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1692522965104&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;예) 오후 2시쯤에 A라는 장소까지 가야 함 

이동방법 : [도보, 버스, 지하철, 택시]

월요일 : 걸어간다 -&amp;gt; 지각 (거리가 멀어서 다리도 아프고 땀이 남. 잔소리를 들어서 기분이 안좋아짐)
화요일 : 버스를 탄다 -&amp;gt; 지각 (걷는것보다 시원하고, 편했지만 차가 많이 막혀 늦음. 잔소리 들음)
수요일 : 지하철을 탄다 -&amp;gt; 정각에 도착 (지하철에 사람이 많아서 덥고 힘들었음. 하지만 늦지는 않음)
목요일 : 택시를 탐 -&amp;gt; 일찍 도착 (하지만 이전 방법들에 비해 비용이 많이 발생함. 하지만 편했음)

=&amp;gt; 금요일 : 조금 일찍 출발해서 여유롭게 버스를 탐 (편하고 잔소리도 듣지 않음)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;여러 조건이 고정되어 있지 않았기 때문에 좋은 예시로 보기는 어렵지만, 큰 맥락으로 보면&lt;span&gt; 강화학습의 매커니즘과 유사하다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정답은 없지만 가장 효과적이라 판단되는 방법을 여러 시행착오를 통해 알아낸 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;강화학습 문제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강화학습은 &lt;b&gt;순차적으로 결정을 내려야 하는 문제&lt;/b&gt;에 적용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들면 A 장소까지 도보로 이동하면서 마주하는 길목 중, 여기서는 어떤 골목으로 가야 하는지 결정하는 것 처럼.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;물론 순차적 행동 결정문제를 강화학습으로만 풀 수 있는 것은 아니고, DP나 진화 알고리즘 등 다양한 방법으로도 해결할 수 있다. &lt;br /&gt;하지만 각기 방법들은 한계를 가지고 있으며 강화학습이 그 한계를 극복할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 풀어내고 싶은 문제를 컴퓨터에 맏기기 위해서는 &lt;u&gt;&lt;b&gt;컴퓨터가 이해할 수 있는 형태&lt;/b&gt;&lt;/u&gt;로, 코드로 풀어낼 수 있는 형태로 변환해야 한다. &lt;br /&gt;즉, &lt;b&gt;문제를 수학적으로 표현&lt;/b&gt;해야 한다는 것이다. 풀고자 하는 문제를 수학적으로 정의할 때 사용하는 방법이 &lt;b&gt;MDP&lt;/b&gt; (Markov Decision Process) 이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;MDP&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1906&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wf95K/btsswjqFwM9/1ASrqAW58M7DbJtelvHAKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wf95K/btsswjqFwM9/1ASrqAW58M7DbJtelvHAKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wf95K/btsswjqFwM9/1ASrqAW58M7DbJtelvHAKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwf95K%2FbtsswjqFwM9%2F1ASrqAW58M7DbJtelvHAKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;300&quot; data-origin-width=&quot;1906&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사람은 왼쪽 그림만 봤을때 대충 어떤걸 하려는지 한눈에 알 수 있다. 하지만 컴퓨터는 본다라는 과정도 없기 때문에 친절히 세팅을 해줘야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MDP란 순차적 행동 결정 문제를 &lt;b&gt;수학적으로 정의&lt;/b&gt;해서, &lt;u&gt;에이전트가 문제에 접근할 수 있게 하는 과정&lt;/u&gt;이다. 수학적으로 정의된 문제들은 대표적으로 아래 요소들로 구성된다. 다른요소들이 있지만 큰 개념들만 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[MDP] 상태 (State)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트의 상태.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 어디에 있는지, 어떤 상태에 있는지 같은 &lt;u&gt;정적인 요소&lt;/u&gt; 뿐만 아니라, &lt;br /&gt;어디로 움직이고 있는지, 속도는 어떠한지 등 &lt;u&gt;동적인 요소&lt;/u&gt; 또한 상태로 표현할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 &lt;b&gt;상태를 통해 어떤 상태에 놓여지는 것이 최대의 보상을 얻을 수 있는지 결정 (해당 상태에 놓여지기 위해 행동을 함)&lt;/b&gt; 하기 때문에 충분한 정보를 제공하는 것 (&lt;u&gt;상태의 정의&lt;/u&gt;) 이 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서는 탁구를 예시로 들고 있는데, 에이전트가 탁구공 &lt;b&gt;위치&lt;/b&gt;만 알고 &lt;b&gt;속도&lt;/b&gt;와 &lt;b&gt;가속도&lt;/b&gt;를 모른다면 사실상 &lt;b&gt;탁구를 제대로 칠 수가 없다&lt;/b&gt;는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[MDP] 행동 (Action)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 수행할 동작. (예-2D Matrix에서 가능한 행동은 상/하/좌/우 4중 택1)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 어떠한 상태에서 취할 수 있는 행동으로, 처음에는 어떤 행동이 좋은건지 정보가 전혀 없다. 그래서 무작위 행동을 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행동을 수행하고 상황이 변화면 그에따른 보상을 받으면서 어떤 상황에서 어떤 행동을 하는 것이 좋은 보상을 받는 방법인지를 학습하게 된다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;[MDP] 보상 (Reward)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 놓인 상황에 따른 결과값. (예-목적지 도달 : 1, 반대 방향 이동 : -1, 정방향 이동 : 0)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 학습할 수 있는 유일한 정보이자 에이전트에 속하지 않는 환경의 일부로, 다른 머신러닝 기법과 다르게 만들어주는 핵심적인 요소.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강화학습의 목표는 시간에 따라 얻는 &lt;b&gt;&lt;u&gt;보상들의 합&lt;/u&gt;을 최대&lt;/b&gt;로 하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;정책&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;을 찾는것.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정책 (policy)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 상태에 대해 에이전트가 수행해야 할 내용을 정해둔 것. &lt;u&gt;MDP 구해야 할 정답&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 가장 이해가 어려웠던 부분이 &lt;b&gt;정책&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인 ML의 경우 input을 개별 weight와 activation function에 따라 연산을 수행하여 결과가 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 정책이라는 것은 '상태'를 입력으로 받고, 그에따른 Best Case를 선택한다는 내용이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 ML의 inference 과정으로 설명하기에 이질감이 들었기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1830&quot; data-origin-height=&quot;1006&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJmW8B/btsslcE0Kpn/w8XNH6b2ZMpaZWFkawffLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJmW8B/btsslcE0Kpn/w8XNH6b2ZMpaZWFkawffLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJmW8B/btsslcE0Kpn/w8XNH6b2ZMpaZWFkawffLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJmW8B%2FbtsslcE0Kpn%2Fw8XNH6b2ZMpaZWFkawffLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;385&quot; data-origin-width=&quot;1830&quot; data-origin-height=&quot;1006&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 state는 우리가 일반적으로 주는 feature 라고 이해할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기온예측이라고 가정하면 강수량, 풍향, 계절, 미세먼지 여부 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 Best Action이라는게 뭘까 싶었다. softmax 같은건가 싶었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책을 읽다보니 대략적으로 짐작하게 된 내용을 정리하자면.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;에이전트가 할 수 있는 행동은 이미 정해져있다.&lt;/u&gt; (일종의 Model의 Output shape/channel)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 기존에 학습했던 내용 (혹은 최초실행으로써 랜덤실행) 을 기반으로 각 행동을 했을때 예상되는 보상을 계산한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 내가 지금 의자위에 서있는데 (state) 앞으로 다리를 뻗으면 (Action) 아마도 넘어질것 (Reward) 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 행동별로 계산한 예상 기대값 중, 가장 큰 보상을 받을 수 있는 행동을 Best Action으로 선정하고 실행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 의자위에서는 그냥 다시 앉는게 가장 이득인거 같다 (왜냐면 다른게 다 손해라서 상대적 Max 값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 상황들이 순차적으로 이어지면서 (의자에 올라갔다가 앉았다가 돌아다녔다가 밖으로 나갔다가 등등) 각 상황에 어떤 행동을 하는게 이득인지를 결정한 것. (이럴때는 이렇게 하는게 제일 좋더라, (1,1) 에서 (1,2) 로 가는게 제일 좋더라 등)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 train 을 얼마하지 않은 경우엔 각 상황에 따른 best action 이라고 판단한 것이 실제로 Best 가 아닐확률이 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 에이전트가 행동을 통해 상황과 계속 상호작용을 하고 학습을 하면서 (Optimizing, 보상의 합을 최대로 받는 방법을 고민함) 제일 좋은 정책 (Opimal policy, 모든 상황에 대해 최대 보상을 받는 가이드라인) 를 얻어가는 과정을 수행하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/강화학습</category>
      <author>otch80</author>
      <guid isPermaLink="true">https://otch80.tistory.com/51</guid>
      <comments>https://otch80.tistory.com/51#entry51comment</comments>
      <pubDate>Sat, 26 Aug 2023 20:29:14 +0900</pubDate>
    </item>
    <item>
      <title>[MLFlow] #3. 기본 기능 이해하기</title>
      <link>https://otch80.tistory.com/50</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;내 입맛대로 서비스를 구성하기 참 어렵다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 이런 코드를 봐서 인지 막막하고 답답하기만 하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 어쩌겠어 해야지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1690097412492&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Quickstart: Install MLflow, instrument code &amp;amp; view results in minutes &amp;mdash; MLflow 2.5.0 documentation&quot; data-og-description=&quot;As a data scientist, your explorations involve running your evolving training code many times. MLflow Tracking allows you to record important information your run, review and compare it with other runs, and share results with others. As an ML Engineer or M&quot; data-og-host=&quot;mlflow.org&quot; data-og-source-url=&quot;https://mlflow.org/docs/latest/quickstart.html&quot; data-og-url=&quot;https://mlflow.org/docs/latest/quickstart.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bWaOxy/hyTo6Mgbbx/KKJVdcgHNaNfxJLdSmFQQ1/img.png?width=2422&amp;amp;height=1000&amp;amp;face=0_0_2422_1000,https://scrap.kakaocdn.net/dn/dlLqy2/hyTpd5GvUG/MDjAhDtBzFt7Fd3fPDoSEK/img.png?width=2342&amp;amp;height=660&amp;amp;face=0_0_2342_660,https://scrap.kakaocdn.net/dn/q6xLw/hyTo5T7n3a/CT7WcT7kGXugTfD1YgHJ3k/img.png?width=3050&amp;amp;height=470&amp;amp;face=0_0_3050_470&quot;&gt;&lt;a href=&quot;https://mlflow.org/docs/latest/quickstart.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://mlflow.org/docs/latest/quickstart.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bWaOxy/hyTo6Mgbbx/KKJVdcgHNaNfxJLdSmFQQ1/img.png?width=2422&amp;amp;height=1000&amp;amp;face=0_0_2422_1000,https://scrap.kakaocdn.net/dn/dlLqy2/hyTpd5GvUG/MDjAhDtBzFt7Fd3fPDoSEK/img.png?width=2342&amp;amp;height=660&amp;amp;face=0_0_2342_660,https://scrap.kakaocdn.net/dn/q6xLw/hyTo5T7n3a/CT7WcT7kGXugTfD1YgHJ3k/img.png?width=3050&amp;amp;height=470&amp;amp;face=0_0_3050_470');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Quickstart: Install MLflow, instrument code &amp;amp; view results in minutes &amp;mdash; MLflow 2.5.0 documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;As a data scientist, your explorations involve running your evolving training code many times. MLflow Tracking allows you to record important information your run, review and compare it with other runs, and share results with others. As an ML Engineer or M&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;mlflow.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 포기하고 싶은 마음을 열심히 참아가면서 MLFLow 공식 홈페이지를 보면서 차근차근 따라해본다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 MLFlow는 로거의 역할에 충실한 것 같다. 내가 여러 시도를 하면서 발생한 결과를 트래킹하고, 각 모델별 성능도 비교해주고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 아무튼 손이 많이 가는 만큼 직관적으로 사용이 가능할 것으로 기대가 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bak2kJ/btsoyZjfGGR/alyWioj22zJHpAsJg32Vy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bak2kJ/btsoyZjfGGR/alyWioj22zJHpAsJg32Vy0/img.png&quot; data-alt=&quot;https://mlflow.org/docs/latest/quickstart.html&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bak2kJ/btsoyZjfGGR/alyWioj22zJHpAsJg32Vy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbak2kJ%2FbtsoyZjfGGR%2FalyWioj22zJHpAsJg32Vy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;360&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://mlflow.org/docs/latest/quickstart.html&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공홈에 있는 그림인데, 위 그람을 보면 일단 데이터 레이크에서 데이터를 가져와서 전처리하고 모델 학습시키고, 최적의 모델을 선정하는 것 까지 데이터 사이언티스트의 역할이고, 이후 모델 관리나 서빙은 MLOps 엔지니어 영역으로 구분되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 이렇게 예쁘게 딱 딱 구분되어 있다면 얼마나 좋을까. 현실은 일단 다 할줄 알아야 하기 때문에 (근데 징징대면 또 어떻게든 해결되는 것 같음) 하나씩 하나씩 배워보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. Add MLflow tracking to your code&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690097681343&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import mlflow

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes
from sklearn.ensemble import RandomForestRegressor

mlflow.autolog()

db = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(db.data, db.target)

# Create and train models.
rf = RandomForestRegressor(n_estimators=100, max_depth=6, max_features=3)
rf.fit(X_train, y_train)

# Use the model to make predictions on the test dataset.
predictions = rf.predict(X_test)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 코드를 트래킹 하는 코드를 실습하는데 정확히 트래킹이 어떤 의미로 쓰인건지 모르겠다. 아마 로깅정도의 뜻일 것 같은데...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mlflow.autolog() 라는 부분이 있고, 아래는 일반적인 모델 학습 및 추론 코드이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 logger 처럼 파일에 상태값을 저장하는 역할이 아닐 까 싶다. 아니면 print 된 값도 다 저장을 하거나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;For many popular ML libraries, you make a single function call:&amp;nbsp;mlflow.autolog(). If you are using one of the supported libraries, this will automatically log the parameters, metrics, and artifacts of your run (see list at&amp;nbsp;&lt;a href=&quot;https://mlflow.org/docs/latest/tracking.html#automatic-logging&quot;&gt;Automatic Logging&lt;/a&gt;). For instance, the following autologs a&amp;nbsp;scikit-learn&amp;nbsp;run:&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어보니 내가 실행한 모델의 파라미터나 모델 성능, 아티팩트 (모델관련 모든 자료) 를 기록해준다고 한다. 이 과정을 sklearn을 통한 실습을 저 코드로 하는거고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 임의로 폴더를 만들고 test.py 파일을 만들어 해당 코드를 실행시켜 보았다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690098140170&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(mlflow)  ~/mlflow/ python test.py

2023/07/23 16:40:52 INFO mlflow.tracking.fluent: Autologging successfully enabled for sklearn.
2023/07/23 16:40:52 INFO mlflow.utils.autologging_utils: Created MLflow autologging run with ID '0a0376b4261b4d39b63b764130bedbd1', which will track hyperparameters, performance metrics, model artifacts, and lineage information for the current sklearn workflow
2023/07/23 16:40:55 WARNING mlflow.utils.autologging_utils: MLflow autologging encountered a warning: &quot;/Users/miniforge3/envs/mlflow/lib/python3.11/site-packages/_distutils_hack/__init__.py:33: UserWarning: Setuptools is replacing distutils.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 Autologging이 잘 되었다고 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 다음 0a0376b4261b4d39b63b764130bedbd1 라는 ID로 하이퍼 파라미터, 매트릭, 아티팩트, 관련 정보등을 볼 수 있는걸 만들었다고 한다 (아마 로깅 파일 이름인듯)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런다음 그냥 warning (안좋은 습관이지만 워닝은 사실 잘 안본다, 코드가 돌다가 멈췄을때만 잠깐 봄)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lOJTU/btsoKZbgZVQ/QZrLV99RO4K6NxclnQ7JBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lOJTU/btsoKZbgZVQ/QZrLV99RO4K6NxclnQ7JBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lOJTU/btsoKZbgZVQ/QZrLV99RO4K6NxclnQ7JBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOJTU%2FbtsoKZbgZVQ%2FQZrLV99RO4K6NxclnQ7JBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;366&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;724&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쨋든 폴더를 확인해보니 0 (아마도 인덱스인듯) 폴더 아래 아까 설명한 ID에 각종 정보들과, 사용한 데이터셋에 대한 meta 가 들어있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.trash에는 아무것도 없다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690098460534&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;artifact_location: file:~/mlflow/mlruns/0
creation_time: 1690098052157
experiment_id: '0'
last_update_time: 1690098052157
lifecycle_stage: active
name: Default&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 최상단에 있는 meta.yaml 을 살펴보니 전반적인 내용에 대한 내용이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4vHWp/btsozj3deiV/Zs6jPPnSuHRIVsP70663E1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4vHWp/btsozj3deiV/Zs6jPPnSuHRIVsP70663E1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4vHWp/btsozj3deiV/Zs6jPPnSuHRIVsP70663E1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4vHWp%2Fbtsozj3deiV%2FZs6jPPnSuHRIVsP70663E1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;359&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;568&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각보다 괜찮다고 느꼇던 부분은 main 코드를 실행했는데 모델 자체도 저장이 된다는 점과, 실행에 필요한 패키지들이 requirements 파일로 저장이 된다는 점이었다. python_env.yaml 파일을 통해 python 자체에 대한 디펜던시까지 함께 관리할 수 있다는 점이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 정보가 있으면 도커를 활용하기 정말 좋다. 파일을 그냥 파싱만 하면 되니까.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이래서 사람들이 mlflow를 좋다고 하는구나 라는걸 바로 알 수 있었다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 모델 최초실행 까지의 과정이 수고스러울 것으로 보인다 (너무 당연한 얘기)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 생각한 이유는 아무래도 test.py 라는 메인 파일을 통해 한번의 실행만 해봤기 때문에 분명 이러한 내용 (디렉터리 구성 가이드) 기본 틀이 있을 것으로 생각이 드는데, 아직까지는 찾지 못했기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSAmpV/btsoyaFH4zP/Kxrrb196NCkLZ4CDvGSU8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSAmpV/btsoyaFH4zP/Kxrrb196NCkLZ4CDvGSU8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSAmpV/btsoyaFH4zP/Kxrrb196NCkLZ4CDvGSU8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSAmpV%2FbtsoyaFH4zP%2FKxrrb196NCkLZ4CDvGSU8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;802&quot; height=&quot;156&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경험상 이런 폴더구조로 시작했던 프로젝트들은 하나같이 다 입맛대로 만들고 나니까 사실 그렇게 하는게 아니더라 라는게 너무 많았어서;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;랜딩페이지로 가보면 테스트 결과가 저장되어 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2546&quot; data-origin-height=&quot;854&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM8I1U/btsoGhpMNy0/XDYjkTnf2lfKfkDkDeQhYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM8I1U/btsoGhpMNy0/XDYjkTnf2lfKfkDkDeQhYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM8I1U/btsoGhpMNy0/XDYjkTnf2lfKfkDkDeQhYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM8I1U%2FbtsoGhpMNy0%2FXDYjkTnf2lfKfkDkDeQhYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2546&quot; height=&quot;854&quot; data-origin-width=&quot;2546&quot; data-origin-height=&quot;854&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신기하게 mlruns 로 경로를 옮기지도 않았는데 실행이 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 git을 clone 할 필요도 없는거 아닌가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;958&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PCq46/btsoxwIWn5A/f1RmxKKj7zbGAtQCCbKg5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PCq46/btsoxwIWn5A/f1RmxKKj7zbGAtQCCbKg5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PCq46/btsoxwIWn5A/f1RmxKKj7zbGAtQCCbKg5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPCq46%2FbtsoxwIWn5A%2Ff1RmxKKj7zbGAtQCCbKg5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1970&quot; height=&quot;958&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;958&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쨋든 결과를 확인해보면 yaml 파일과 디렉토리에서 확인할 수 있었던 내용들이 들어있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r6LQv/btsoCj2Kykc/VHQ3atE5Az7BxbFzZqBrGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r6LQv/btsoCj2Kykc/VHQ3atE5Az7BxbFzZqBrGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r6LQv/btsoCj2Kykc/VHQ3atE5Az7BxbFzZqBrGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr6LQv%2FbtsoCj2Kykc%2FVHQ3atE5Az7BxbFzZqBrGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;344&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Metric도 한눈에 확인할 수 있어서 편리했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2504&quot; data-origin-height=&quot;1318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bq3P03/btsoxXsHUuJ/kDGvaoMybqz1OSHnuEAwJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bq3P03/btsoxXsHUuJ/kDGvaoMybqz1OSHnuEAwJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bq3P03/btsoxXsHUuJ/kDGvaoMybqz1OSHnuEAwJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbq3P03%2FbtsoxXsHUuJ%2FkDGvaoMybqz1OSHnuEAwJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2504&quot; height=&quot;1318&quot; data-origin-width=&quot;2504&quot; data-origin-height=&quot;1318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 모델을 한번 더 학습시켜 성능을 비교했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 대충 mlflow가 어떤건지, 어떤식으로 동작하는지, 어떤 장점이 있는지 맛봤으니 기능을 하나씩 익혀가면서 내가 필요한 내용들로 꾸며나가도록 해야겠다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI</category>
      <category>de</category>
      <category>DS</category>
      <category>mlflow</category>
      <author>otch80</author>
      <guid isPermaLink="true">https://otch80.tistory.com/50</guid>
      <comments>https://otch80.tistory.com/50#entry50comment</comments>
      <pubDate>Sun, 23 Jul 2023 16:54:40 +0900</pubDate>
    </item>
  </channel>
</rss>