<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>자신에 대한 고찰</title>
    <link>https://talkingaboutme.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 12 Apr 2026 10:43:52 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>생각많은 소심남</managingEditor>
    <item>
      <title>[Book] 머신 러닝 Q&amp;amp;AI</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Machine-Learning-QAI</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004406&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;머신 러닝 Q&amp;amp;AI&lt;/a&gt;&quot; 책은 길벗 출판사로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1745681339449&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;머신 러닝 Q &amp;amp; AI&quot; data-og-description=&quot;머신 러닝, 딥러닝, 생성 AI, 자연어 처리, 컴퓨터 비전 등 AI에 관한 30가지 핵심 질문과 답변&quot; data-og-host=&quot;www.gilbut.co.kr&quot; data-og-source-url=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004406&quot; data-og-url=&quot;http://www.gilbut.co.kr/book/view?bookcode=BN004406&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cLHfPo/hyYFGWLuO4/NzhuHrHhMwAKvkKSaqHSO1/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385,https://scrap.kakaocdn.net/dn/c2I5wO/hyYH8kMvvc/tf4hUhqqnGSlNxJjiKPHn1/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385,https://scrap.kakaocdn.net/dn/ckUp7D/hyYMfJQ9pq/zmr9v58tCapTXhSE5SUAJK/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385&quot;&gt;&lt;a href=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004406&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004406&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cLHfPo/hyYFGWLuO4/NzhuHrHhMwAKvkKSaqHSO1/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385,https://scrap.kakaocdn.net/dn/c2I5wO/hyYH8kMvvc/tf4hUhqqnGSlNxJjiKPHn1/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385,https://scrap.kakaocdn.net/dn/ckUp7D/hyYMfJQ9pq/zmr9v58tCapTXhSE5SUAJK/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385');&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;머신 러닝 Q &amp;amp; AI&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;머신 러닝, 딥러닝, 생성 AI, 자연어 처리, 컴퓨터 비전 등 AI에 관한 30가지 핵심 질문과 답변&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.gilbut.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;오래 전부터 가지고 있던 개인적인 소망이긴 했지만, 내가 바라던 것 중 하나는 내가 궁금한 부분에 있어서 바로 질문을 하면 답을 해주는 뭔가가 있으면 좋겠다 싶었다. 물론 요새는 ChatGPT가 워낙 잘 되어 있어서 내가 이상하게 질문해도 글의 의도를 파악하고 원하는 바를 알려주고 있고, 예전에는 stack overflow나 지식인의 도움을 많이 받았다. 하지만 한창 인공지능 관련 공부를 하고, 새로운 주제에 대한 질문을 하고자 할때 뭐라고 질문을 해야할 지가 진짜 막막했다. 어떻게 보면 인공지능을 전공하고 전문적으로 공부하던 사람에게는 당연한 내용일지라도, 나한테는 어떤 것을 물어야 할지 모르던 부분이 있었다. 예를 들어서 통계에 나오는 신뢰 구간에 대한 내용도 이론 서적을 읽어도 잘 이해가 되지 않고, 실제적으로 어떻게 활용되는지도 조금 궁금한 부분이 있었다. (물론 통계 전공한 사람은 엄청 간단한 내용이겠지만..)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20250427_002441.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cav135/btsNA7Yvk8t/rVHulPHJMqXPBsLuhxGru0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cav135/btsNA7Yvk8t/rVHulPHJMqXPBsLuhxGru0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cav135/btsNA7Yvk8t/rVHulPHJMqXPBsLuhxGru0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcav135%2FbtsNA7Yvk8t%2FrVHulPHJMqXPBsLuhxGru0%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;3000&quot; height=&quot;4000&quot; data-filename=&quot;20250427_002441.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이 책은 어떻게 보면 시중에 나온 여타 인공지능 관련 서적과는 조금 다른 유형으로 기술이 된다. 바로 인공지능의 다양한 분야, 머신러닝이나 딥러닝, 생성형 AI, 컴퓨터 비전 등에서 나올 수 있을 법한 질문을 던지고, 이에 대한 답변을 쭉 기술하는 방식으로 책의 내용이 구성되어 있다. 그래서 책에서 다루는 주제들이 다양하고, 뭔가 심오하지는 않으면서 간단하게 핵심만 읽을 수 있도록 되어 있다. 딱 책의 제목이 전체 주제와 연관되어 있는 것을 잘 모사하고 있는데, AI와 관련된 Q&amp;amp;A 기술서라고 보면 좋을 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 실제 읽어보면 알겠지만, 각 주제와 질문, 그리고 이에 대한 답변이 그렇게 길게 기술되어 있지 않다. 그런데 각 주제로 선정한 질문들을 곱씹어 보면 정말 인공지능을 공부하는 사람이라면 한번쯤 궁금하게 여겨졌을법한 내용들로 구성되어 있다. 그래서 뭔가 머리를 꽁꽁 싸메고 보지않아도 관심이 있는 사람이라면 술술 읽어보면서 그 궁금증을 해소할 법하다.특히 요즘에 핫한 트랜스포머에 대한 내용은 핵심 알고리즘이라고 할 수 있는 어텐션 메카니즘부터 인코더-디코더 구조, 그리고 더 나아가 fine-tune 하는 것에 대한 내용까지 적절한 질문과 답으로 설명이 잘 되어 있다. 추가로 딱 이론적인 내용뿐만 아니라 모델 성능 향상이나 GPU 활용과 같이 실용적으로 인공지능 기술을 접목하려는 사람에게도 도움이 될만한 주제들도 담겨져 있어서 정말 다양한 분야를 커버하려 시도했다는 느낌이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;물론 정해진 책 분량에 다양한 인공지능 주제를 담다보니 각 주제에서 커버하는 내용이 간략하게 요약이 되어 있다. 그래서 뭔가 깊게 이해하려는 사람보다는 현재의 궁금함을 금방 해소하고, 조금 더 깊게 고민해보려는 사람에게 책의 내용이 적절할 것 같다. 그래도 각 절 마지막마다 해당 주제에 대해서 추가로 참고할만한 문헌들이 소개되어 있어, 조금 더 공부해보려는 독자한테도 가이드가 될 듯 하다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>길벗</category>
      <category>머신러닝</category>
      <category>머신러닝q&amp;amp;ai</category>
      <category>인공지능</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1136</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Machine-Learning-QAI#entry1136comment</comments>
      <pubDate>Sun, 27 Apr 2025 00:50:37 +0900</pubDate>
    </item>
    <item>
      <title>[Thing] Jetson Orin Nano + Yahboom case</title>
      <link>https://talkingaboutme.tistory.com/entry/Thing-Jetson-Orin-Nano-Yahboom-case</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20250424_000319-EDIT.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ULCFL/btsNwKiob6w/drOU4BXapmPRsB5aNJOd4k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ULCFL/btsNwKiob6w/drOU4BXapmPRsB5aNJOd4k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ULCFL/btsNwKiob6w/drOU4BXapmPRsB5aNJOd4k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FULCFL%2FbtsNwKiob6w%2FdrOU4BXapmPRsB5aNJOd4k%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;4000&quot; height=&quot;3000&quot; data-filename=&quot;20250424_000319-EDIT.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항상 구매하려다 물량이 없어서 구매를 못했던 Jetson Orin Nano 재고가 생겨서 냉큼 구입했다. 거기에 아마존에서 Orin 전용 Yahboom 케이스까지 있어서 같이 구입했다. 사진은 이전에 구입한 Pironman 5 케이스까지 같이 찍어봤다. 사실 Yahboom 케이스는 쿨러에 Wifi용 안테나가 달려있는게 다긴 하지만.. 그냥 PC처럼 쓰고 싶어서 케이스를 사봤다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20250424_000329.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIPZbN/btsNxvc7rNT/ytnEiffKyzMu6iCiYzmNA0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIPZbN/btsNxvc7rNT/ytnEiffKyzMu6iCiYzmNA0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIPZbN/btsNxvc7rNT/ytnEiffKyzMu6iCiYzmNA0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIPZbN%2FbtsNxvc7rNT%2FytnEiffKyzMu6iCiYzmNA0%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;4000&quot; height=&quot;3000&quot; data-filename=&quot;20250424_000329.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거기에 서랍속에 뒹굴던 Razer 스티커까지 붙여서 장식도 해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이제 왠만한 장비는 갖춰서 한번 가지고 놀아봐야 겠다.&lt;/p&gt;</description>
      <category>Things</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1135</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Thing-Jetson-Orin-Nano-Yahboom-case#entry1135comment</comments>
      <pubDate>Thu, 24 Apr 2025 00:15:54 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 자연어 처리를 위한 허깅페이스 트랜스포머 하드 트레이닝</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-hugging-face-transformers-hard-training</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개되는 책은 비제이퍼블릭으로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20250404_002859.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uwRB0/btsM9dRcpRa/bkXfWXCgwCgm0yOx465GXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uwRB0/btsM9dRcpRa/bkXfWXCgwCgm0yOx465GXK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uwRB0/btsM9dRcpRa/bkXfWXCgwCgm0yOx465GXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuwRB0%2FbtsM9dRcpRa%2FbkXfWXCgwCgm0yOx465GXK%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;3000&quot; height=&quot;4000&quot; data-filename=&quot;20250404_002859.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2017년 구글의 &quot;Attention is All you need&quot; 이라는 논문을 통해서 처음 소개된 transformer는 언어 데이터를 처리할 때 단어 간의 관계를 효율적으로 파악하는 Attention 메카니즘을 통해서 좋은 성능을 보여준다. 그리고 최근에 GPT를 필두로 인기를 끌고 있는 생성형 AI 분야에서도 번역이나 챗봇, 텍스트 요약, 감정 분석 등에 많이 활용되고 있다. 물론 이런 자연어처리 뿐만 아니라 이미지 생성이나 연속 의사 결정 과정에서도 transformer 구조는 다른 신경망 구조에 비해서 좋은 성능을 보여주고 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;사실 이 구조가 개발자들 사이에서 널리 활용되게 된 기반에는 허깅페이스의 역할이 크다. 처음에는 챗봇 서비스를 하는 스타트업이었던 회사였던 허깅페이스는 transformers 라는, transformer를 쉽게 사용하고, 모델을 배포/활용할 수 있는 패키지를 만듦으로써, 어떻게 보면 transformer를 사용해야되는 개발자 입장에서는 필수적으로 사용하는 일종의 개발자 허브가 되었다. 그래서 물론 transformer를 처음부터 만들어서 활용하는 개발자도 있겠지만, 거진 대부분의 개발자가 활용하게 되었고 시중에도 이 패키지의 활용한 서비스와 패키지를 쉽게 사용할 수 있게 가이드를 제공하는 책들이 많이 등장하고 있다. 오늘 소개할 책도 이 허깅페이스에서 제공하는 transformers 패키지와 transformer를 학습시킬때 활용하는 강화학습 패키지인 trl 의 활용법에 대해서 서술한 책이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이전에도 관련 서적 (10가지 프로젝트로 끝내는 트랜스포머 활용 가이드 with 파이토치, 트랜스포머를 활용한 자연어 처리) 몇권 리뷰한 적이 있지만, 트랜스포머에 대해서 다루는 책은 대부분이 처음에 트랜스포머의 구조에 대해서 자세하게 설명하고, 직접 구현해보는 책이거나 아니면 허깅페이스 transformers 패키지를 통해서 모델 학습이나 활용, 미세 조정같은 기능을 다루는 예제들이 소개된 책들일텐데, 이 책은 전형적인 후자의 책, 활용 방안에 대해서 중점적으로 소개하는 책이다. 그래서 책의 대부분의 내용이 패키지 활용 방법과 transformers를 활용하면서 아마 같이 사용하게 될 tokenizer, accelerate, evaluate 같은 주변 패키지를 같이 활용해볼 수 있는 예시로 구성되어 있다. 그리고 역서가 아닌 국내 서적이기에, 책에서 다뤄지는 모델이나 예시도 klue나 kobert 같은 국내 모델을 활용하는 예시로 되어 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 책과 차별화시킬 수 있는 부분이라면 앞에서 소개했던 TRL 관련 내용이 다뤄지고 있다는 점이다. 사실 허깅페이스 관련 서적이라면 대부분의 책들이 모델 학습이나 활용, 미세조정, 조금 더 나아가면 양자화나 모델 서빙에 대해 다 잘 다뤄지고 있지만, 최근에 LLM 학습에 활용되는 RLHF나 DPO 같은 강화학습 기법에 대해서 소개된 책이 거의 전무하다. 허깅페이스에서도 transformer RL 이라는 패키지를 통해서 트랜스포머를 활용한 강화학습 패키지도 같이 배포하고 있고, 이 책에서는 이 TRL 패키지를 통해서 Reward Model을 학습하는 예시를 제공하고 있다. 물론 전체 책 내용과 대비했을때 분량이 많지는 않지만, LLM을 학습할때 활용되는 강화학습 기법 (DPO나 CPO, KTO 같은)을 활용해보고자 하는 사람이 있으면 이 책을 통해서 접해도 좋을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;책을 읽으면서 약간의 오타가 조금 거슬리긴 했지만, 최근에 나온 서적인 만큼 최신 라이브러리에 대응된 예시와 특히 국내서에 맞게 모델 예시가 같이 제공되는 점, 무엇보다 바로 앞에서 소개했던 것처럼 trl에 대해서 다뤄진 부분이 있는 거의 유일한 책이란 점에서 허깅페이스 transformer를 활용한 예시를 직접 작성해보고 학습하고자 하는 개발자에게 도움이 될 책이라 생각한다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>LLM</category>
      <category>강화학습</category>
      <category>대규모언어모델</category>
      <category>모델경량화</category>
      <category>비제이퍼블릭</category>
      <category>언어모델</category>
      <category>인공지능</category>
      <category>자연어처리</category>
      <category>트랜스포머</category>
      <category>허깅페이스</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1134</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-hugging-face-transformers-hard-training#entry1134comment</comments>
      <pubDate>Fri, 4 Apr 2025 01:38:46 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 10가지 프로젝트로 끝내는 트랜스포머 활용 가이드 with 파이토치</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Building-transformer-models-with-pytorch</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;10가지 프로젝트로 끝내는 트랜스포머 활용 가이드 with 파이토치&quot; 책은 루비페이퍼 출판사로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;트랜스포머는 Vaswani가 Attention is all you need 란 눈문을 통해서 소개한 신경망 구조이다. 기존에 나왔던 MLP나 CNN과 같은 기존의 신경망 구조에서 벗어나 내부적으로 해당 도메인의 메커니즘을 학습할 수 있는 구조로 되어 있어서, 초기에 제안되었던 NLP 분야 외에도 영상이나 강화학습에도 확장한 사례가 많이 제시되어 있으며, 요근래 나온 생성형 AI의 거대 모델의 기본 구조가 대부분 트랜스포머로 되어 있다. 물론 학습하는데 필요한 리소스가 많이 필요하다는 점이 일종의 제약일 수 있겠지만, 적어도 기존의 신경망 구조를 크게 개선한 형태로 현재까지도 연구가 계속 이뤄지고 있는 주제이기도 하다. 특히 최근에는 huggingface를 통해서 범용적으로 활용할 수 있는 트랜스포머 패키지가 공개/배포되고 있어서 많은 사용자들이 쉽게 사용할 수 있는 형태로 되어 있다. 그래서 시중에도 트랜스포머에 대해서 소개한 책들이 많이 출간되어 있고, 최근에 출간된 책 하나를 소개해보고자 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20250303_214124.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dIud3t/btsMBlCu6wH/hpmXftSQufkCmIItU2vFS0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dIud3t/btsMBlCu6wH/hpmXftSQufkCmIItU2vFS0/img.jpg&quot; data-alt=&quot;트랜스포머 활용 가이드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dIud3t/btsMBlCu6wH/hpmXftSQufkCmIItU2vFS0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIud3t%2FbtsMBlCu6wH%2FhpmXftSQufkCmIItU2vFS0%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;3000&quot; height=&quot;4000&quot; data-filename=&quot;20250303_214124.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&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;사실 이 책은 트랜스포머의 동작 원리나 구현체에 대해서 설명을 해주는 이론서라기 보다는 책 제목에도 표현되어 있는 것처럼 다양한 분야에 활용할 수 있는 예시들을 10개 제공한다. 그리고 이 활용 예제는 huggingface에서 제공되는 transformers 패키지와 pytorch를 통해서 실습해보는 예제이다. 다른 것보다도 많이 활용되는 NLP 뿐만 아니라 영상쪽으로도 실습할 수 있는 예제들이 제공되어 관련 부분으로 활용해보고자 하는 사람에게는 좋은 예시를 제공하고 있다. 어떻게 보면 시중에 출간된 트랜스포머를 다룬 책들과 구별할 수 있는 차별점이 되겠다. 구체적으로 책에서 다루는 트랜스포머 관련 활용 예제는 다음과 같다.&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;BERT-base-uncased 모델 파인튜닝을 통한 classifier 학습&lt;/li&gt;
&lt;li&gt;셰익스피어가 쓴 작품같은 텍스트 생성&lt;/li&gt;
&lt;li&gt;의학 데이터를 활용한 AI 클리닉 QA 챗봇 학습&lt;/li&gt;
&lt;li&gt;안과 이미지 데이터를 통한 안과분야의 AI 의사 구현&lt;/li&gt;
&lt;li&gt;Object detection 을 위한 프로그램 제작&lt;/li&gt;
&lt;li&gt;다이어트 계산기 구현&lt;/li&gt;
&lt;li&gt;Whisper를 활용한 Speech-to-text 변환&lt;/li&gt;
&lt;li&gt;SpeechT5을 활용한 text-to-speech 변환&lt;/li&gt;
&lt;li&gt;Noise 제거로 오디오 품질 개선&lt;/li&gt;
&lt;li&gt;파이토치 관련 기법 들&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 트랜스포머란 주제가 다루는 깊이에 비해 책의 분량이 생각보다 얇게 느껴질 수 있다. 원서도 사실 비슷한 분량이기도 하고, 각 절로 나눠져 있는데 있어서 절별로 다루는 내용이 조금 짧다고 느껴진다. 특히, 후반부에 다루는 강화학습 관련 주제에서는 특이하게 Decision Transformer나 Trajectory Transformer를 설명하고 있긴 하지만, 책의 예시에서 해당 내용을 다루지는 않는다. 그리고 각 코드별로 주석이 대체적으로 상세하게 달려있기는 하나, 후반부에는 코드 설명은 생략하고, 실행 방법이나 간단한 설명 위주로 넘어가는게 느껴졌다. 물론 이론서가 아닌 활용가이드이기에 그 목적에는 충분한 서적이라 볼 수 있겠지만, 해당 책에 조금 더 나은 것을 바란다면 각 예시에서 다루는 이론적인 부분에 조금 더 설명이 보충되었으면 좋겠다는 생각이 들었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20250303_225034.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dunpGx/btsMy4vtKL5/A0Mek6gPCSYv5XwyiQmG50/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dunpGx/btsMy4vtKL5/A0Mek6gPCSYv5XwyiQmG50/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dunpGx/btsMy4vtKL5/A0Mek6gPCSYv5XwyiQmG50/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdunpGx%2FbtsMy4vtKL5%2FA0Mek6gPCSYv5XwyiQmG50%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;4000&quot; height=&quot;3000&quot; data-filename=&quot;20250303_225034.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 트랜스포머가 등장하는 시점에서 조금 관심을 가지고 봐왔던 터라, 관련 서적도 많이 찾아보고 최근에도 타 출판사를 통해서 출판된 서적(&quot;마스터링 트랜스포머&quot;)이 있어 본의아니게 좀 비교가 된 부분도 있겠지만, 그래도 huggingface transformers 패키지를 활용해서 실제 활용할 수 있는 예시를 제공하는 부분에 있어서 해당 분야에 관심이 많은 독자들의 관심을 많이 끌 것이다. 아 참고로 원서의 소스코드 외적으로 역자분이 기타 오류 부분을 추가로 수정하고 동작 확인을 일일이 확인하신 것으로 보인다. 책의 관련 코드를 활용해보려는 독자 입장에서는 도움이 많이 되리라 생각한다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>루비페이퍼</category>
      <category>트랜스포머</category>
      <category>파이토치</category>
      <category>허깅페이스</category>
      <category>활용가이드</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1133</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Building-transformer-models-with-pytorch#entry1133comment</comments>
      <pubDate>Tue, 4 Mar 2025 00:29:35 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 실전 데이터 분석 with 파이썬</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-data-science-bootcamp</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004310&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;실전 데이터 분석 with 파이썬&lt;/a&gt;&quot; 책은 길벗 출판사로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1738766907024&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;실전 데이터 분석 with 파이썬&quot; data-og-description=&quot; &quot; data-og-host=&quot;www.gilbut.co.kr&quot; data-og-source-url=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004310&quot; data-og-url=&quot;http://www.gilbut.co.kr/book/view?bookcode=BN004310&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9IfSI/hyX7U2ssts/ZwIEoRfZpoZCsZYZVfoiq0/img.jpg?width=300&amp;amp;height=410&amp;amp;face=0_0_300_410,https://scrap.kakaocdn.net/dn/odZvs/hyYcgJwwzf/Kcjajv73M6EdfnKk3QNXJk/img.jpg?width=300&amp;amp;height=410&amp;amp;face=0_0_300_410&quot;&gt;&lt;a href=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004310&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004310&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9IfSI/hyX7U2ssts/ZwIEoRfZpoZCsZYZVfoiq0/img.jpg?width=300&amp;amp;height=410&amp;amp;face=0_0_300_410,https://scrap.kakaocdn.net/dn/odZvs/hyYcgJwwzf/Kcjajv73M6EdfnKk3QNXJk/img.jpg?width=300&amp;amp;height=410&amp;amp;face=0_0_300_410');&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;실전 데이터 분석 with 파이썬&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.gilbut.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20250205_012158.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJyF1b/btsL6XqmL1q/11h9ItWauYCJTDKKVhR5Pk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJyF1b/btsL6XqmL1q/11h9ItWauYCJTDKKVhR5Pk/img.jpg&quot; data-alt=&quot;실전 데이터 분석 with 파이썬&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJyF1b/btsL6XqmL1q/11h9ItWauYCJTDKKVhR5Pk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJyF1b%2FbtsL6XqmL1q%2F11h9ItWauYCJTDKKVhR5Pk%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20250205_012158.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실전 데이터 분석 with 파이썬&lt;/figcaption&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;이번에 소개하는 책도 역시 그런 맥락에서는 여타 같은 주제를 다룬 책들과 유사하나, 조금 전개방면에서 조금 차별성이 나타난다. 간단하게 소개하자면 책에서 다루는 실전 문제를 5가지로 부여한 후, 먼저 이를 해결하기 위해 필요한 이론적인 내용과 패키지 활용 예시를 쭉 소개한다. 해당 문제를 푸는데 필요한 지식들이 확보가 된 이후로 비로서 실전 문제를 푸는 과정으로 책이 진행된다. 그래서 어떻게 보면 다양한 관점의 독자가 바라보기 좋은 책이 될 것 같다. 예를 들어서 기본적인 지식이 부족한 사람은 처음부터 쭉 따라하면서 이론적인 내용과 예시를 직접 해보는 방법을 취할 수 있을 것이고, 어느 정도 관련 분야에 대한 지식을 가지고 있는 사람이라면 바로 실전 문제를 접하면서 필요한 내용을 앞에서 확인하면서 접근한 방법도 고려해볼 수 있겠다. 크게 책에서 다루고 있는 실전 주제는 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;카드게임의 승리 전략 탐색&lt;/li&gt;
&lt;li&gt;온라인 광고 클릭의 유의성 평가하기&lt;/li&gt;
&lt;li&gt;뉴스 헤드라인으로 질병 발생 추적하기&lt;/li&gt;
&lt;li&gt;온라인 채용 공고로 데이터 과학자의 이력서 개선하기&lt;/li&gt;
&lt;li&gt;소셜 네트워크 데이터로 미래의 친구 관계 예측&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 이렇게 접근하다보니 책의 분량이 조금 많아진 측면도 있긴 하지만, 원체 책에서 다루고 하는 내용의 범주가 워낙 넓기에 다양한 데이터 분석 및 머신러닝 관련 지식을 습득하고자 하는 practitioner에게는 도움이 될 듯 하다. 특히 4번째에서 다뤄지는 온라인 채용공고로 데이터 과학자의 이력서 개선하는 부분에 대한 내용은 자연어 처리와 관련되어 웹사이트에서 추출한 텍스트 기반으로 어떤 채용 공고에 대한 단어의 묶음집을 clustering하는 예시에 대해서 다루고 있는데, 최근 활용되는 생성형 AI를 쓰는 건 아니지만 이렇게 웹 상의 데이터를 활용하여 처리하는 예제는 참신하기도 하고, 꽤 유용한 느낌이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 이 책에서는 최근에 핫한 생성형 AI에 관한 내용이나 딥러닝 관련 내용은 담고 있지 않다. 하지만 실제 현업에서 접할 수 있는 문제에 대해서 이렇게 pandas와 scikit-learn 같은 툴을 활용하여 해결하는 과정을 소개하는 책이기에, 관련 내용을 통해서 이론적인 내용과 실전 주제에 대한 경험을 쌓을 수 있는 좋은 기회를 제공하리라 생각한다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>data science bootcamp</category>
      <category>길벗</category>
      <category>데이터 분석</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1132</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-data-science-bootcamp#entry1132comment</comments>
      <pubDate>Thu, 6 Feb 2025 00:18:36 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 파이썬으로 배우는 통계학 교과서 2판</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-statistic-reference-with-python-2nd</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://www.hanbit.co.kr/store/books/look.php?p_code=B6819729468&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;파이썬으로 배우는 통계학 교과서 2판&lt;/a&gt;&quot; 책은 한빛미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1735459276932&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;파이썬으로 배우는 통계학 교과서(2판)&quot; data-og-description=&quot;파이썬 코드로 풀어보는 친절한 통계학 입문서&quot; data-og-host=&quot;www.hanbit.co.kr&quot; data-og-source-url=&quot;https://www.hanbit.co.kr/store/books/look.php?p_code=B6819729468&quot; data-og-url=&quot;https://www.hanbit.co.kr/store/books/look.php?p_code=B6819729468&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/k3y5W/hyXSzKnKai/Zkh33lOpt47FdqyRm4X3eK/img.jpg?width=203&amp;amp;height=260&amp;amp;face=0_0_203_260,https://scrap.kakaocdn.net/dn/bEh1sb/hyXSwGSN5L/sEUvgGqX8Y8CkT6dZRu2K0/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514&quot;&gt;&lt;a href=&quot;https://www.hanbit.co.kr/store/books/look.php?p_code=B6819729468&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.hanbit.co.kr/store/books/look.php?p_code=B6819729468&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/k3y5W/hyXSzKnKai/Zkh33lOpt47FdqyRm4X3eK/img.jpg?width=203&amp;amp;height=260&amp;amp;face=0_0_203_260,https://scrap.kakaocdn.net/dn/bEh1sb/hyXSwGSN5L/sEUvgGqX8Y8CkT6dZRu2K0/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514');&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;파이썬으로 배우는 통계학 교과서(2판)&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.hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;몇년전만 해도 통계학이란 주제의 도서는 보통 자연과학 분야에 많이 있었는데, 이제는 컴퓨터/IT 분야에서도 많이 볼 수 있을만큼 본래의 주제에서 확장된 다른 영역에서도 통계학을 다루고 있다. 또한 뭔가 어려운 주제인 것처럼 여겨지고 딱딱한 내용들만 담겨져 있던 내용에서 최근에는 비전공자들도 쉽게 이해하고 다룰 수 있도록 실습형 책들도 많이 소개되고 있다. 특히 파이썬으로 구현되어 있는 통계 패키지 구현체는 기존의 통계언어인 R보다도 접근하기 쉽고, 더 응용할 수 있는 범주가 넓어져 관련 내용을 이해하고 다루는데 도움이 되었을 듯 하다. 물론 시중에 파이썬으로 진행하는 통계 관련 서적들이 많이 출간되어 있지만, 이번에 2판으로 출간된 책을 읽어볼 기회가 있어 책을 소개해보고자 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20241229_165717.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVg6cu/btsLBJErWNg/CNwmsDEP25bGqBhAEV8b5K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVg6cu/btsLBJErWNg/CNwmsDEP25bGqBhAEV8b5K/img.jpg&quot; data-alt=&quot;파이썬으로 배우는 통계학 교과서 2판&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVg6cu/btsLBJErWNg/CNwmsDEP25bGqBhAEV8b5K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVg6cu%2FbtsLBJErWNg%2FCNwmsDEP25bGqBhAEV8b5K%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;3024&quot; height=&quot;4032&quot; data-filename=&quot;20241229_165717.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬으로 배우는 통계학 교과서 2판&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스트에서 소개하는 &quot;파이썬으로 배우는 통계학 교과서 (2판)&quot;은 19년에 출간했던 1판에서 기술통계나 추론통계 관련 실습 내용이 추가되면서 분량이 1.5배 정도 증가하였다. 사실 이전판도 좋기 했지만 뭔가 교과서라고 하기에는 파이썬에 대한 내용과 통계의 이해에 필요한 모델에 대해서만 소개되어 있어, 그냥 살펴보고 넘어갔던 기억이 어렴풋하게 남아있는데, 이번 책은 조금 부족한 부분이 실습으로 보완되고, 이론적으로도 분량이 보완되었다. 특히 이론적인 부분이 많이 보강되어서, 뭔가 통계에 대한 기본 레퍼런스를 찾는 사람에게도 유용할 것 같았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;앞에서도 소개했다시피 파이썬의 강점이라면, 쉽게 접근할 수 있는 언어이면서 통계 관련 이론적인 내용이 잘 패키지화되어 있고, 특히 다른 영역과 접목시키기도 좋다는 점일텐데, 사실 그 부분을 잘 확인해볼 수 있는 부분이 시각화 부분이 아닐까 생각한다. 역시 이 책에서도 구현한 내용이나 통계적 이론에 대한 시각화 자료를 matplotlib이나 seaborn 등으로 표현하는 과정이 잘 설명되어 있다. 그래서 주어진 예제마다 통계치 확인 후, 결과를 확인해볼 수 있는 시각화 그림을 그려볼 수 있도록 구성되어 있으며, 여기까지 오면 아마 통계를 공부한 사람이라면 교과서에서 봄직한 그림들을 직접 그려볼 수 있을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;가장 기본기가 될만한 내용이 잘 서술되어 있기 때문에 여타 파이썬 통계 관련 책들과 비교했을 때 그렇게 부족한 부분이 보이지 않는다. (굳이 한가지 짚자면, 어쩔수 없는 한계였겠지만, 통계 용어가 너무 일본식 단어를 풀어서 쓴 느낌이 있어, 영어단어라도 같이 표현을 해놓았으면 더 좋을 것 같다는 생각이 든다.)&amp;nbsp; 그래도 간단한 예제를 통해서 내용을 이해하고, 현재의 문제에 적용해볼 수 있는 능력을 기를 수 있는 책이기에 그런 저자의 의도에 맞는 내용이 잘 서술된 책이라고 생각된다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>통계</category>
      <category>파이썬</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1131</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-statistic-reference-with-python-2nd#entry1131comment</comments>
      <pubDate>Sun, 29 Dec 2024 17:35:18 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 월 20달러로 고용하는 데이터 분석가 with 챗GPT</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-data-analysis-with-chatGPT</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9493600341&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;월 20달러로 고용하는 데이터 분석가 with 챗GPT&lt;/a&gt;&quot; 책은 한빛미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1732551672509&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;월 20달러로 고용하는 데이터 분석가 with 챗GPT&quot; data-og-description=&quot;시장 조사, 고객 분석, 매출 예측, 보고서를 한 번에 코드 한 줄, 수식 계산 없이 기초 통계부터 고급 데이터 분석까지!&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9493600341&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9493600341&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwX2Vp/hyXDhJymoh/TsT9H3UkpVO6u192TYiRnk/img.jpg?width=179&amp;amp;height=260&amp;amp;face=0_0_179_260,https://scrap.kakaocdn.net/dn/qrKIh/hyXDbP59lJ/lrruohWsoOImaabl0lujH0/img.jpg?width=3000&amp;amp;height=4000&amp;amp;face=0_0_3000_4000,https://scrap.kakaocdn.net/dn/ctSmvU/hyXDk7mIS2/eC16kEljgVTfqQ9FUziJgK/img.jpg?width=3000&amp;amp;height=4000&amp;amp;face=0_0_3000_4000&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9493600341&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9493600341&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwX2Vp/hyXDhJymoh/TsT9H3UkpVO6u192TYiRnk/img.jpg?width=179&amp;amp;height=260&amp;amp;face=0_0_179_260,https://scrap.kakaocdn.net/dn/qrKIh/hyXDbP59lJ/lrruohWsoOImaabl0lujH0/img.jpg?width=3000&amp;amp;height=4000&amp;amp;face=0_0_3000_4000,https://scrap.kakaocdn.net/dn/ctSmvU/hyXDk7mIS2/eC16kEljgVTfqQ9FUziJgK/img.jpg?width=3000&amp;amp;height=4000&amp;amp;face=0_0_3000_4000');&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;월 20달러로 고용하는 데이터 분석가 with 챗GPT&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;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 한달에 20달러를 자유롭게 쓸 수 있다면 어디에 쓸 것인가? 요새 환율이 올라서 약 3만원에 가까운 돈이긴한데... 물론 각자의 필요에 맞게 쓰겠지만, 나는 당연히 chatGPT plus를 구독하는데 쓸 것이다. 이 20달러라는 가격이 바로 chatGPT plus를 구독하는데 필요한 비용인데, 이번 포스트에서 소개할 책의 제목에서 설명하는 것이 ChatGPT plus를 구독함으로써, 우리에게 주어진 데이터에 대해서 분석해줄 수 있는 AI 에이전트를 활용하자는 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20241126_000719.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lai0U/btsKWL33qgI/t0jGUcEXCPVaNiTWFjoKK1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lai0U/btsKWL33qgI/t0jGUcEXCPVaNiTWFjoKK1/img.jpg&quot; data-alt=&quot;월 20달러로 고용하는 데이터 분석가 with 챗GPT&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lai0U/btsKWL33qgI/t0jGUcEXCPVaNiTWFjoKK1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLai0U%2FbtsKWL33qgI%2Ft0jGUcEXCPVaNiTWFjoKK1%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;3024&quot; height=&quot;4032&quot; data-filename=&quot;20241126_000719.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;월 20달러로 고용하는 데이터 분석가 with 챗GPT&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 책의 표지에서 담고 있는 것처럼 코드 한 줄없이 기초 통계부터 예측을 할 수 있다는 키워드에 꽂혀서 책을 선택하게 되었다. 만약 내가 활용하고 있는 센서 데이터도 이런데 올리면 뭔가 abnormality나 상관관계같은 것을 알아서 분석을 해줄 수 있을까 하는 막연한 기대감을 가지고 말이다. 그리고 실제로 책에서도 그런 관련 정보를 얻기까지의 과정을 예시 데이터를 통해서 소개하고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;여타 책과 다르게 이 책이 좀 특이한 부분은 책의 진행이 대화형으로 이뤄진다는 것이다. 일반적인 책들이 단순히 지식을 쭉 서술하고, 관련 코드 설명하고 이런 방식이었다면, 이 책에서는 가상의 인물인 김대리와 박차장이 주어진 데이터를 가지고 분석을 할때 챗GPT를 활용하는 방안을 소개하고 있다. 그리고 책 표지에 나와있다시피, 책의 내용속에는 데이터 분석에 필요한 코드가 거의 없다. 그렇기 때문에 이 책은 어떻게 보면 통계에 활용할 수 있는 프롬프팅 가이드북이라고 보면 좋을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;사실 어떤 데이터를 가지고 분석을 하기 위해서는 기본적인 통계 지식이 필요한 편이다. 데이터 유형이 어떤지, 아니면 내가 세운 가설이 맞는지 통계 검정도 해봐야 하고, 앞에서 언급한 것처럼 이상치 탐지도 하기 위한 방안도 고민해야 한다. 그래서 이 책은 그런 관련 내용을 각각의 장으로 나눠서 챗GPT와 함께 분석하는 과정을 소개하고 있다. 그래서 생각보다 각 장의 내용이 짦게 되어 있지만, 딱 통계에서 필요한 정보를 얻기 위해 챗GPT를 활용하는 방안을 잘 소개하고 있다. 특히 후반부에 소개되는 API를 활용한 자동화 과정은 앞의 데이터 분석 과정을 발전시켜 조금 더 실전적으로 활용할 수 있는 방법에 대해서 설명해주고 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 개인적으로 좀 아쉬운 부분은 챗GPT 활용 방안에 대해서 세부주제별 장을 나눠놓다 보니, 조금 통계 관련 기본 이론이 같이 설명되어 있으면 좋겠다는 생각이 들었다. 물론 챗GPT이 알아서 잘 분석해주겠지만, 어느덧 책을 읽으면서 &quot;이게 통계책인지, 데이터 분석책인지, 아님 프롬프트책인지..&quot; 좀 독자 타겟이 애매할 것 같다는 생각이 들었다. 그래도 데이터 분석을 하는데 있어서 이렇게 챗GPT를 활용할 수 있구나 하는 신선한 주제의 책이었기에 나름 책을 재미있게 읽었다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>20달러</category>
      <category>데이터분석</category>
      <category>챗GPT</category>
      <category>통계</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1130</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-data-analysis-with-chatGPT#entry1130comment</comments>
      <pubDate>Tue, 26 Nov 2024 01:47:16 +0900</pubDate>
    </item>
    <item>
      <title>[Book]  RAG 시스템 구축을 위한 랭체인 실전 가이드</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-RAG-system-langchain-practical-guide</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://www.rubypaper.co.kr/entry/RAG-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%9E%AD%EC%B2%B4%EC%9D%B8-%EC%8B%A4%EC%A0%84-%EA%B0%80%EC%9D%B4%EB%93%9C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;RAG 시스템 구축을 위한 랭체인 실전 가이드&lt;/a&gt;&quot; 책은 루비페이퍼로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1732547894581&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;RAG 시스템 구축을 위한 랭체인 실전 가이드&quot; data-og-description=&quot; &quot; data-og-host=&quot;www.rubypaper.co.kr&quot; data-og-source-url=&quot;https://www.rubypaper.co.kr/entry/RAG-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%9E%AD%EC%B2%B4%EC%9D%B8-%EC%8B%A4%EC%A0%84-%EA%B0%80%EC%9D%B4%EB%93%9C&quot; data-og-url=&quot;https://www.rubypaper.co.kr/entry/RAG-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%9E%AD%EC%B2%B4%EC%9D%B8-%EC%8B%A4%EC%A0%84-%EA%B0%80%EC%9D%B4%EB%93%9C&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cj7vAm/hyXDgcMCtE/bT6oskC2kI8qqsxyFT1gCk/img.jpg?width=800&amp;amp;height=1091&amp;amp;face=0_0_800_1091,https://scrap.kakaocdn.net/dn/5af9Y/hyXDfSuzVg/iZtzHN6t9KpKrgXMXRYAB0/img.jpg?width=800&amp;amp;height=1091&amp;amp;face=0_0_800_1091,https://scrap.kakaocdn.net/dn/HlzcL/hyXDlFbYYf/Npck42cTQoPdq8g8AQ1Iw1/img.jpg?width=2008&amp;amp;height=2740&amp;amp;face=0_0_2008_2740&quot;&gt;&lt;a href=&quot;https://www.rubypaper.co.kr/entry/RAG-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%9E%AD%EC%B2%B4%EC%9D%B8-%EC%8B%A4%EC%A0%84-%EA%B0%80%EC%9D%B4%EB%93%9C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.rubypaper.co.kr/entry/RAG-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%9E%AD%EC%B2%B4%EC%9D%B8-%EC%8B%A4%EC%A0%84-%EA%B0%80%EC%9D%B4%EB%93%9C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cj7vAm/hyXDgcMCtE/bT6oskC2kI8qqsxyFT1gCk/img.jpg?width=800&amp;amp;height=1091&amp;amp;face=0_0_800_1091,https://scrap.kakaocdn.net/dn/5af9Y/hyXDfSuzVg/iZtzHN6t9KpKrgXMXRYAB0/img.jpg?width=800&amp;amp;height=1091&amp;amp;face=0_0_800_1091,https://scrap.kakaocdn.net/dn/HlzcL/hyXDlFbYYf/Npck42cTQoPdq8g8AQ1Iw1/img.jpg?width=2008&amp;amp;height=2740&amp;amp;face=0_0_2008_2740');&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;RAG 시스템 구축을 위한 랭체인 실전 가이드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.rubypaper.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근에는 생성형 AI가 쓰이지 않는 분야가 거의 없을만큼 다양한 분야에 LLM을 직접 접목시키거나 특수 목적에 맞게 재학습시켜서 사용하는 케이스가 늘기 시작했다. 그런데 지금 이렇게 활발하게 쓰이는 것과 비교했을때 불과 몇달 전만해도 LLM의 문제들이 부각되어서 잘 사용할 수가 없었다. 그중 보통 &quot;세종대왕과 맥북 이야기&quot;로 대변되는 환각 현상은 정확한 답, 아니면 답에 근접한 사실을 필요로 하는 사용자에게는 치명적인 단점 중 하나였었는데, 이를 극복할 수 있는 기술 중 하나가 바로 검색-증강-생성으로 설명할 수 있는 RAG(Retrival-Augmented-Generation) 이었다. 쉽게 말해서 이전에 사용자가 물어봤던 내용들을 일종의 DB화 하여, 새로운 질문이 들어왔을때 기존의 지식을 증강하여 새로운 내용을 만들어내겠다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이렇게 하면 환각 현상과 같이 전혀 답이 아닌 내용을 출력으로 내뱉을 가능성을 줄일 수 있는데, 사실 말로만 들으면 이렇게 DB도 만들고, 지식을 확장시키고, 새로운 지식을 생성하는 일종의 파이프라인을 만든게 어렵게 느껴질 수 있다. 그런데 재작년쯤에 오픈소스로 공개되면서 이런 파이프라인을 쉽게 만들 수 있게 해주는 툴이 생긴 것이 바로 Langchain이라는 것이다. 사실 나도 어떤식으로 동작하는지만 알고 있었지, 이게 어떻게 활용될고 실제 사례에서는 어떻게 개발에 응용할 수 있는지가 궁금했던 부분인데, 이번 기회에 관련 내용을 담은 책을 읽을 기회가 있어서 소개하고자 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20241126_000706.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n0Bm6/btsKUBhzY58/PNIU1ADKdCqEgzcTIPrcU0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n0Bm6/btsKUBhzY58/PNIU1ADKdCqEgzcTIPrcU0/img.jpg&quot; data-alt=&quot;RAG 시스템 구축을 위한 랭체인 실전 가이드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n0Bm6/btsKUBhzY58/PNIU1ADKdCqEgzcTIPrcU0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn0Bm6%2FbtsKUBhzY58%2FPNIU1ADKdCqEgzcTIPrcU0%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;3024&quot; height=&quot;4032&quot; data-filename=&quot;20241126_000706.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;RAG 시스템 구축을 위한 랭체인 실전 가이드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책은 저자가 유튜브를 통해서 공개하고 있는 &lt;a href=&quot;https://www.youtube.com/playlist?list=PLQIgLu3Wf-q_Ne8vv-ZXuJ4mztHJaQb_v&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Langchain 뿌시기&lt;/a&gt;란 강의영상 내용에 실제 툴을 가지고 활용한 사례를 잘 정리한 내용을 담고 있다. 그래서 책의 표지에도 나와 있는 것처럼 강의와 연계해서 내용을 살펴볼 수 있기 때문에, 이해가 안가거나 추가적인 설명이 필요한 독자에게 좋은 학습 자료를 제공하고 있다. 책도 LLM과 랭체인의 동작원리에 대해서 잘 소개되어 있긴 하지만, 생각보다 유튜브를 통해서도 좋은 내용이 소개되고 있으니까 꼭 참고해보면 좋을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;시중에 보면 랭체인 관련 서적이 최근들어서 많이 출시되고 있고, 그 책들을 모두 살펴본 것은 아니지만 나름 독자의 입장에서 책을 읽었을 때 느낄 수 있는 부분은 예제와 이론적인 내용이 적절히 버물러져 있다는 것이었다. 사실 이론과 실제 코드를 설명하고 직접 작성해보는 것과의 균형을 맞추는 것은 저자입장에서는 정말 어려운 일이라는 것을 알고 있고, 이 둘을 만족하다보면 결과적으로 책 분량이 늘면서 접근성이 떨어지는 문제가 생기는데, 이 책은 그렇게 많지 않은 분량 가운데에서도 실제 법제처에서 발췌한 문서를 기반으로 RAG의 구성 요소를 직접 구현해볼 수 있는 경험을 제공한다. 그러면서 중간중간에 코드 이해에 필요한 이론적인 배경과 도식화 자료를 통해서도 설명이 잘 되어 있어 랭체인 활용법을 잘 이해할 수 있게 도와준다. 궁극적으로 이 책의 마무리는 streamlit을 활용한 AI chatbot을 만들고 외부 서비스와 연동해서 배포하는 것까지 마무리된다.&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>Hobby/Book</category>
      <category>LangChain</category>
      <category>RAG</category>
      <category>랭체인</category>
      <category>루비페이퍼</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1129</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-RAG-system-langchain-practical-guide#entry1129comment</comments>
      <pubDate>Tue, 26 Nov 2024 01:11:03 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 파이썬의 엑셀, 판다스 라이브러리</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-python-excel-pandas-library</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;파이썬의 엑셀, 판다스 라이브러리&quot; 책은 &lt;a href=&quot;https://bjpublic.tistory.com/261239&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;비제이퍼블릭&lt;/a&gt;으로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1730043332087&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;파이썬의 엑셀, 판다스 라이브러리&quot; data-og-description=&quot;부제&amp;nbsp;엑셀 예제로 배우는 파이썬 데이터 분석저자&amp;nbsp;김판다출판사&amp;nbsp;비제이퍼블릭(BJ퍼블릭)출간/배본가능일&amp;nbsp;2024년 9월 30일정가&amp;nbsp;40,000원페이지&amp;nbsp;632쪽판형&amp;nbsp;188*257ISBN&amp;nbsp;979-11-6592-296-2 (93000)&amp;nbsp;관련분류&quot; data-og-host=&quot;bjpublic.tistory.com&quot; data-og-source-url=&quot;https://bjpublic.tistory.com/261239&quot; data-og-url=&quot;https://bjpublic.tistory.com/261239&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cCDRWW/hyXlReoPDm/d3utzy6EMcMFcBPUDSTZ41/img.png?width=800&amp;amp;height=639&amp;amp;face=0_0_800_639,https://scrap.kakaocdn.net/dn/jiVBY/hyXprSEL03/wqmVYK71O3QUhKVb7S1kV0/img.png?width=800&amp;amp;height=639&amp;amp;face=0_0_800_639&quot;&gt;&lt;a href=&quot;https://bjpublic.tistory.com/261239&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bjpublic.tistory.com/261239&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cCDRWW/hyXlReoPDm/d3utzy6EMcMFcBPUDSTZ41/img.png?width=800&amp;amp;height=639&amp;amp;face=0_0_800_639,https://scrap.kakaocdn.net/dn/jiVBY/hyXprSEL03/wqmVYK71O3QUhKVb7S1kV0/img.png?width=800&amp;amp;height=639&amp;amp;face=0_0_800_639');&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;nbsp;엑셀 예제로 배우는 파이썬 데이터 분석저자&amp;nbsp;김판다출판사&amp;nbsp;비제이퍼블릭(BJ퍼블릭)출간/배본가능일&amp;nbsp;2024년 9월 30일정가&amp;nbsp;40,000원페이지&amp;nbsp;632쪽판형&amp;nbsp;188*257ISBN&amp;nbsp;979-11-6592-296-2 (93000)&amp;nbsp;관련분류&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bjpublic.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;개인적으로 하고 있는 일이 실제 데이터에서 추출된 데이터를 분석하고 적당한 모델을 만드는 일이다보니, 물론 tensorflow나 pytorch, jax같은 것을 사용하기도 하지만, 주로 사용하는 라이브러리는 무엇보다도 pandas가 아닐까 싶다. 보통 데이터는 날짜, 센서 데이터가 쭉 기입된 raw data 형태의 csv file일수도 있고, 아니면 엑셀과 같이 정형화된 규격에 딱 데이터가 들어가 있는 형태일 수 있다. 그래서 보통 그 데이터를 뽑아 원하는대로 처리해서 의미있는 통계치를 계산할 수 있고, 혹은 다른 사람이 의사결정을 쉽게 내릴 수 있도록 데이터를 시각화하는 작업도 하게 된다. 물론 이 데이터가 처리하기 쉽게 깨끗한 형태로 저장되어 있으면 좋겠지만, 가장 일반적인 형태는 중간에 데이터가 누락되거나, 아니면 규격에 맞지 않는 데이터가 들어오는 것이고, 그러게 되면 하나씩 그런 데이터는 어떻게 처리하면 좋을지에 대한 고민을 한다. 이 모든게 다 pandas를 다루다보면 하게 되는 일이다. 그래서 정말 편리한 라이브러리일 수도 있고, 제대로 사용하려면 데이터의 형태나 안에 포함되어 있는 데이터의 규격에 대해서 고민을 많이 해야 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 개인적으로도 시중에서 pandas 관련 서적을 많이 읽어보고 필요하다면 구입해서 보는 편이다. 그래서 읽은 책들이 Python for Data Analysis랑 Pandas in Action 이었다. 두 책 모두 Pandas 관련 서적으로 유명한 서적이기도 하고, 예제 기반으로 내용이 이어져 있어서 직접 따라해보면서 pandas의 기능을 이해하기 좋은 책들이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20241028_002511.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cj4cOv/btsKlXjUudB/ZcsqVxkEKWNGSW97BpRzF0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cj4cOv/btsKlXjUudB/ZcsqVxkEKWNGSW97BpRzF0/img.jpg&quot; data-alt=&quot;파이썬의 엑셀,판다스 라이브러리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cj4cOv/btsKlXjUudB/ZcsqVxkEKWNGSW97BpRzF0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcj4cOv%2FbtsKlXjUudB%2FZcsqVxkEKWNGSW97BpRzF0%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;3024&quot; height=&quot;4032&quot; data-filename=&quot;20241028_002511.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책의 장점 중 하나로 꼽을 수 있는 것은 무엇보다도 시원시원한 도식화와 그림으로 된 설명이다. 물론 이때문에 책의 분량이나 가격이 여타 데이터 분석 책에 비하면 조금 많이 나가는 편이긴 하지만, 그에 비해 그림을 통한 내용 설명이 잘 되어 있는 편이다. 사실 데이터 분석의 특성상 데이터가 어떻게 되어 있는지 눈으로 직접 확인해보는 과정이 필요하고, 실제 Pandas API를 사용할 때도 어떤식으로 동작하는지를 작은 데이터로 확인해보면서 전체 데이터에 적용해보는 과정이 필요한데, 이 책은 그런 부분이 충실하게 되어 있다. 그래서 뭔가 어떤 기능을 원할 때도 그런 일련의 과정을 책을 읽으면서 이해할 수 있다는 부분이 개인적으로는 좋았던 것 같다. 아무래도 저자분이 관련 분야에 대한 강사로 일하고, 관련 노하우를 책으로 옮겼기에 오히려 독자 입장에서도 이해가 잘 되게 책이 구성된게 아닐까 생각이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 앞에서 소개한 역서들은 책 내용이 좋기는 했지만, 사용된 API에 대한 구체적인 설명을 찾기 위해서는 일일이 공식 문서에서 직접 확인하는 번거로운 과정이 존재했는데, 이 책은 어떤 기능에 대한 설명이 이뤄질때 사용된 API의 기능에 대해서 간략히 설명된 부분이 있어, 그런 번거로운 과정이 없었다. 또한 조금 복잡한 기능들에 대해서는 따로 심화 절을 두어서 해당절을 통해서 복잡한 기능에 대한 주제별 예시와 적용 방안을 소개한 부분도 나름 책에서 얻어갈 수 있었던 부분이었다. 다만 pandas를 다루다보면 아무래도 시각화에 대한 주제도 다루는게 필요할 것 같은데, 이 책에서도 해당 주제에 대한 언급이 전체 분량에 비하면 아주 간단하게만 설명되어 있어서 조금 아쉽게 느껴질 수도 있을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 이 책은 전반적으로 Pandas를 공부하고자 하는 사람의 편의를 제공하는 책이라는 생각이 들었다. 각 챕터별로 실습을 바로 해볼 수 있도록 예제 코드에 대한 QR 코드를 제공함과 동시에 앞에서 언급한 바와 같이 책의 내용에 대한 도식화(정말 다른 책에 비하면 그림이나 설명이 시원시원하게 되어 있다.)는 읽는 사람이 딱 이해하기 쉽도록 잘 정리된 책이었다. 물론 이로 인한 책 가격(대략 3.6만원)이 조금 부담스러울 수 있겠지만, 뭔가 Pandas에 대해서 제대로 공부해보고자 하는 사람에게는 좋은 책이 될 것 같다.&lt;/p&gt;</description>
      <category>비제이퍼블릭</category>
      <category>파이썬의엑셀</category>
      <category>판다스라이브러리</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1128</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-python-excel-pandas-library#entry1128comment</comments>
      <pubDate>Mon, 28 Oct 2024 01:21:01 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 챗GPT 제대로 써먹기</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-chatGPT-usage</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;챗GPT 제대로 써먹기&quot; 책은 &lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8087890731&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;한빛미디어&lt;/a&gt;로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1730038375590&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;챗GPT 제대로 써먹기&quot; data-og-description=&quot;이 책은 챗GPT의 잠재력을 최대한 활용하고자 하는 독자를 위한 종합 가이드입니다. 챗GPT의 작동 원리를 이해하고 다양한 기능을 익힌 다음, 효과적으로 챗GPT와 대화하는 방법을 배웁니다. 그리&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8087890731&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8087890731&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/GFFPw/hyXpBnpGiu/A5gsQAC887PH9f4AoUPUN0/img.jpg?width=178&amp;amp;height=260&amp;amp;face=0_0_178_260,https://scrap.kakaocdn.net/dn/bIQEAv/hyXlPOo3cF/gMJ92QMwMvo3PWqkdNTUak/img.jpg?width=700&amp;amp;height=4340&amp;amp;face=0_0_700_4340,https://scrap.kakaocdn.net/dn/kGrkQ/hyXlXloCjA/1MQ1odVqj3kiU0FBCUcBP0/img.jpg?width=1080&amp;amp;height=2316&amp;amp;face=0_0_1080_2316&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8087890731&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8087890731&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/GFFPw/hyXpBnpGiu/A5gsQAC887PH9f4AoUPUN0/img.jpg?width=178&amp;amp;height=260&amp;amp;face=0_0_178_260,https://scrap.kakaocdn.net/dn/bIQEAv/hyXlPOo3cF/gMJ92QMwMvo3PWqkdNTUak/img.jpg?width=700&amp;amp;height=4340&amp;amp;face=0_0_700_4340,https://scrap.kakaocdn.net/dn/kGrkQ/hyXlXloCjA/1MQ1odVqj3kiU0FBCUcBP0/img.jpg?width=1080&amp;amp;height=2316&amp;amp;face=0_0_1080_2316');&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;챗GPT 제대로 써먹기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이 책은 챗GPT의 잠재력을 최대한 활용하고자 하는 독자를 위한 종합 가이드입니다. 챗GPT의 작동 원리를 이해하고 다양한 기능을 익힌 다음, 효과적으로 챗GPT와 대화하는 방법을 배웁니다. 그리&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요새 생성형AI를 사용한 사례들이 많이 늘어났다는 것을 많이 느낀다. 확실히 IT 관련 서적이 나오는 주제도 보면 생성형 AI를 어떻게 쓰는지에 대해서 소개한 책들이 많이 나오기 시작했고, 기밀누출 우려로 인해 보안을 우선시 하던 회사 내에서도 제한적으로라도 쓸수 있게끔 풀렸다. 책분야에 한정해서 보자면, 오히려 주제가 전공 내용을 다루던 과거에서 오히려 인공지능 개념이 접목되고 생성형 AI가 등장한 시점부터 더 다양한 주제들로 책이 많이 나오는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실상 나도 어떤 글을 쓴다던지 주제를 탐색할때 챗GPT를 유료로 사용하던게 1년전이었는데, 1년이 지난 시점에서는 그때에 비해 정말로 다양한 기능들이 업데이트되었다. 무엇보다 과거에는 딱 GPT3.5만 딱 있었고, 한번에 할 수 있는 질문도 제한적이었는데, 이제는 GPT-4o도 나오고 canvas 모드도 나오면서 정말 다양한 기능들이 새로 출시했다. 한번 중간에는 GPTs라는 어떤 주제에 특화된 모델로 질의응답을 할 수 있는 기능이 추가되었을때도 신기했었는데, canvas 모드에서는 주어진 문제와 코드를 놓고 실시간으로 채팅하는 식으로 대화가 진행되는 것을 보면, 아 진짜 이 기능으로 할 수 있는게 정말 많을것 같은데... 하는 생각이 들었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20241027_230617.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qzYTp/btsKlFjoLyH/4mULkeaybC0XKN4jtApIF1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qzYTp/btsKlFjoLyH/4mULkeaybC0XKN4jtApIF1/img.jpg&quot; data-alt=&quot;챗GPT 제대로 써먹기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qzYTp/btsKlFjoLyH/4mULkeaybC0XKN4jtApIF1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqzYTp%2FbtsKlFjoLyH%2F4mULkeaybC0XKN4jtApIF1%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;3024&quot; height=&quot;4032&quot; data-filename=&quot;20241027_230617.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;챗GPT 제대로 써먹기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 소개할 책은 이렇게 한정된 분야에만 사용하던 챗GPT를 다양한 분야에서도 써볼 수 있도록 그런 응용 사례와 각 사례에 맞게 프롬프트를 작성할 수 있는 방법에 대해서 소개된 책이다. 사실 책의 분량이 많지 않아, 챗GPT를 많이 써본 사람은 휘리릭 금방 읽을 수 있을 법하고, 뭔가 하는 분야에 처음 챗GPT를 사용해보고자 하는 사람은 관심을 가지고 읽어볼만한 내용들이 많이 들어있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서 소개하고 있는 응용 사례로는 일상, 보고서 작성, 학습, 컨텐츠 생성, 프로그래밍 등이 있고, 각 주제별로 어떤식으로 답변을 얻을 수 있는지에 대한 예시 프롬프트를 제공하고 있다. 그런데, 책의 대부분 내용이 GPT 모델과 실제 작성자간의 질의내용이 담겨져 있어서, 어떻게 보기에는 &quot;그냥 있는 내용을 소개하는 것 아닌가?&quot; 싶은 내용들이 대부분을 차지하는 것으로 보일 수 있다. 실제로도 어떤식으로 프롬프팅을 하는 것에 대해 가이드를 준다기 보다는 GPT가 주는 답변에 대해서 보완적으로 프롬프트를 만들어 보낼 수 있는지 그 사례를 주제별로 보여준 편이라고 보였다. 그래서 앞에서 소개한 것처럼 많이 써본 사람은 그냥 이런 주제로도 쓰이는구나 라고 넘어갈 수 있다는게 그런 부분이 될 듯 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책이 담은 장점이라면, 정말 다양한 주제에 대한 맞춤형 GPT (앞에서 소개한 GPTs 모델)와 GPT store에 대한 소개가 되어 있다는 점이다. 사실 공식창에서는 보여지는 GPTs 모델들이 엄청 많기 때문에 어떤 주제에 대해서 어떤 모델을 사용해야 할지 감이 와닿지 않는데, 이 책에서는 딱 주제별로 구분이 되어 있어 GPTs모델을 묶어서 사용한다던가 하는 생각을 해볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 사실.. 이 책에 대해서 추천을 할거냐에 대해서는 조금 한계가 명확히 보인다는게 개인적인 생각이다. 서두에서도 이야기 했지만 1년이 지난 시점에서 GPT도 기능적인 업데이트부터 모델까지 개선되어왔다. 그러면 GPT가 처음 등장했을때의 책들은? 그때 소개했던 기능은 지금 outdate된 것도 있고, 다른 기능들로 대체된 부분도 많다. 물론 책이라는 정적인 지적 산출물에 최대한 최신의 기술을 담았다 하더라도 지금 GPT가 보여주는 발전의 속도를 감안하면, 너무 수명이 짧아 보인다. 사실 지금 시중에 출시되어 있는 거의 대부분의 GPT 관련 서적들이 다 그렇겠지만 말이다..&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1127</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-chatGPT-usage#entry1127comment</comments>
      <pubDate>Mon, 28 Oct 2024 00:10:22 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 이미지 처리 바이블</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Image-Processing-Bible</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004084&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이미지 처리 바이블&lt;/a&gt;&quot; 책은 길벗 출판사로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1727278957705&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;이미지 처리 바이블&quot; data-og-description=&quot;파이썬, OpenCV, 텐서플로로 배우는 이미지 처리와 컴퓨터 비전의 모든 것!&quot; data-og-host=&quot;www.gilbut.co.kr&quot; data-og-source-url=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004084&quot; data-og-url=&quot;http://www.gilbut.co.kr/book/view?bookcode=BN004084&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/4pGCI/hyW6D71mO4/9GaQNkgh5XkpdynWJUfBtk/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385,https://scrap.kakaocdn.net/dn/bojAID/hyXaI0TS50/1NZy4ht461OpLMNQN8u480/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385&quot;&gt;&lt;a href=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004084&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004084&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/4pGCI/hyW6D71mO4/9GaQNkgh5XkpdynWJUfBtk/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385,https://scrap.kakaocdn.net/dn/bojAID/hyXaI0TS50/1NZy4ht461OpLMNQN8u480/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385');&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;파이썬, OpenCV, 텐서플로로 배우는 이미지 처리와 컴퓨터 비전의 모든 것!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.gilbut.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20240925_231031.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RFBVg/btsJNrSI050/qCuKkKOkv2sBBdMcXXPpXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RFBVg/btsJNrSI050/qCuKkKOkv2sBBdMcXXPpXK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RFBVg/btsJNrSI050/qCuKkKOkv2sBBdMcXXPpXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRFBVg%2FbtsJNrSI050%2FqCuKkKOkv2sBBdMcXXPpXK%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;3024&quot; height=&quot;4032&quot; data-filename=&quot;20240925_231031.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책이름에 바이블이 포함되어 있어서 처음에는 &quot;참 거창하다&quot;는 생각을 하면서 읽기 시작했는데, 어우.. 책에서 다루는 전반적인 내용이나 진행되는 흐름 자체가 처음 영상 처리를 다뤄보는 사람부터 실제 딥러닝 모델을 활용해서 직접 텐서플로로 구현해보는 내용으로 알차게 구성되어 있다. 특히 영상 처리에서 필요한 기본적인 이론이나 딥러닝 모델의 구조 및 동작 설명을 뒷받침할 수 있는 도식화 자료들이 잘 되어 있어서 책으로 보면서도 이해가 쉬웠다. (올 컬러로 되어 있어서 그런지 더욱 보기 좋았던 것 같다.) 개인적으로는 논문 속에서만 봐왔던 신경망 구조가 디테일하게 잘 설명되어 있어서 이해하는데 도움이 많이 되었다.&amp;nbsp;&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;이미지처리 기초&lt;/li&gt;
&lt;li&gt;이미지 분류&lt;/li&gt;
&lt;li&gt;객체 탐지&lt;/li&gt;
&lt;li&gt;이미지 생성&lt;/li&gt;
&lt;li&gt;실제 프로젝트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;등으로 구성되어 있고, 각 주제별로 활용되고 있는 유명한 모델들 (GoogleNet, ViT, YOLO, FCN, StarGAN 등) 등을 직접 텐서플로로 구현해보는 내용들로 예제가 구성되어 있다. 그래서 관련 내용을 처음 접하는 사람이나 직접 구현해보면서 동작을 이해하는 사람들의 니즈를 충분히 만족시킬 수 있을 법했다. 아무래도 저자분들이 인공지능 교육을 진행하시는 분들이 쓴지라 독자의 수준을 고려해서 내용 진행이나 코드가 구성된거 같아서 글의 내용이나 흐름이 이해하기가 좋았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 바이블이라고 해서 &quot;어 진짜?&quot; 싶었는데, 내가 봤던 이미지 처리에 대해서 다룬 텐서플로 개발서로는 정말 구성이 깔끔하고 좋았던 책이었다. 아 마지막으로 책의 내용이 궁금한데, 코드라도 살펴보고 싶은 사람이라면 저자의 &lt;a href=&quot;https://github.com/Lilcob/imageprocessingbible&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github&lt;/a&gt;에 notebook들이 공개되어 있으니 참고하면 좋을 것 같다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>길벗</category>
      <category>이미지 처리 바이블</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1126</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Image-Processing-Bible#entry1126comment</comments>
      <pubDate>Thu, 26 Sep 2024 01:19:07 +0900</pubDate>
    </item>
    <item>
      <title>[Book] AI를 위한 필수 수학</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Essential-Math-for-AI</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9813506107&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AI를 위한 필수 수학&lt;/a&gt;&quot; 책은 한빛미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1727275403505&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;AI를 위한 필수 수학&quot; data-og-description=&quot;AI의 시작은 수학이다! 정리/증명/코딩은 빼고, 적용 사례에 집중한 수학 가이드&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9813506107&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9813506107&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/HAL5Q/hyXaJ6zRs0/NzXNXx2MwbtKhjT5LaBKGK/img.jpg?width=203&amp;amp;height=260&amp;amp;face=0_0_203_260,https://scrap.kakaocdn.net/dn/Yub9D/hyW6C2lr0F/XhUVeLW6pnY8NoVBk4dCHk/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9813506107&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9813506107&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/HAL5Q/hyXaJ6zRs0/NzXNXx2MwbtKhjT5LaBKGK/img.jpg?width=203&amp;amp;height=260&amp;amp;face=0_0_203_260,https://scrap.kakaocdn.net/dn/Yub9D/hyW6C2lr0F/XhUVeLW6pnY8NoVBk4dCHk/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514');&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;AI를 위한 필수 수학&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;AI의 시작은 수학이다! 정리/증명/코딩은 빼고, 적용 사례에 집중한 수학 가이드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘들어서 일하면서 느끼는 부분은 수학이 참 어렵다는 것이다. 흔히들 꼭 수학을 알아야 개발을 할 수 있는거냐고 반문할 수 있겠지만, 그냥.. 뭔가 논문도 읽고, 원리를 이해하려니 거기에 나와있는 수학이 이해가 안되고, 또 그걸 이해하려고 쉽운 수학을 보려니 너무 범주가 넓어지곤 한다. 제일 문제인 것은 뭔가 모르는 수학이 나왔을때 어떤 부분을 찾아서 공부를 해야 이해할 수 있느냐는 것이다. 한마디로 뭔가를 모르는데 무엇을 모르는지 모른다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 시중에서도 수학 관련 전공서적도 찾아보고, 뭔가 AI를 연구하는데 있어 필요한 수학지식을 쌓을만한 참고서를 찾았다. 그런데, 아마 전공서적을 본 사람들은 공통적으로 느끼겠지만 전공서적도 결국 보면 문제와 증명으로 가득차있고, 결국 시간을 내서 문제를 풀면서 이해를 해야 한다. 그렇기에 필요한 지식을 빠르게 습득하려는 사람에게는 수학을 공부한다는 게 참 어려운 일이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20240925_230954.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc7InS/btsJM9xYtJK/aVRIH4lk6egOYK6LobimjK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc7InS/btsJM9xYtJK/aVRIH4lk6egOYK6LobimjK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc7InS/btsJM9xYtJK/aVRIH4lk6egOYK6LobimjK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc7InS%2FbtsJM9xYtJK%2FaVRIH4lk6egOYK6LobimjK%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;3024&quot; height=&quot;4032&quot; data-filename=&quot;20240925_230954.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;또한 나름 AI에 대한 설명 책이긴 한데, 안에 코드도 거의 없다. 그럼에도 인공지능에서 많이 활용되는 알고리즘에 대한 동작 원리들이 서술식으로 쭉 설명되어 있어서 이해하기가 쉬웠다. 물론 실제 코드를 실행하고 분석하면서 이해하는 사람에게는 좋은 책이 아닐 수도 있지만, 적어도 AI에 대한 수학적인 배경과 원리를 이해하기 쉽게 설명한 책을 찾는 독자라면 해당 책의 내용이 크게 도움이 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 이 책이 마음에 들었던 부분은 인공지능 영역별로 필요한 수학에 대한 정리가 잘 되어 있다는 점이다. 특히 자연어 처리에서 사용되는 transformer에 대한 동작 설명이나 확률적 생성 모델의 원리에 대해 다룬 부분에서는 항상 논문을 읽을때도 조금 막막했던 수식 부분에 대한 설명이 잘 되어 있어서 개인적으로 도움이 많이 되었다.&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;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;AI의 시작은 수학이다! 정리/증명/코딩을 빼고, 적용 사례에 집중한 수학 교과서&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 책에 대해서 돌이켜보면 이 표현이 책에 대해서 잘 설명한 문구였다. 수학이 사실 중요한 것을 알면서도 섣불리 접근하기 어려웠던 부분이 있었는데, 이 책이 그런 어려움을 조금 완화시켜줘서 한 줄기의 빛과 같은 책이었다. 물론 다른 서평에서 언급되어 있는 것처럼 전체 주제에 대한 균형(어느 주제는 많은 분량을 할애해서 설명했는데, 후반부 주제는 심오한 주제에 비해 너무 간단하게 설명이 마무리된 부분도 있었다)이 없는게 조금 그랬지만, 그래도 지금까지 읽은 AI 관련 수학책 중에서는 가장 이해가 잘 되었던 책이었다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>ai를 위한 필수 수학</category>
      <category>수학</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1125</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Essential-Math-for-AI#entry1125comment</comments>
      <pubDate>Thu, 26 Sep 2024 00:29:51 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 쓸모있는 AI 서비스 만들기</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-useful-AI-service</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8530368944&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;쓸모있는 AI 서비스 만들기&lt;/a&gt;&quot; 책은 한빛미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1724945544181&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;쓸모 있는 AI 서비스 만들기&quot; data-og-description=&quot;현직 개발자가 다양한 예제로 알려 주는 쉽고 빠른 나만의 AI 서비스 개발 가이드&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8530368944&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8530368944&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eHwaH/hyWV0aEVzj/9KG6kMPy9eycW9YUDyNqe0/img.jpg?width=203&amp;amp;height=260&amp;amp;face=0_0_203_260,https://scrap.kakaocdn.net/dn/bFySrO/hyWVWzk5GO/0PPrwkQEaFk8OrKRHcOnJ0/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8530368944&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8530368944&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eHwaH/hyWV0aEVzj/9KG6kMPy9eycW9YUDyNqe0/img.jpg?width=203&amp;amp;height=260&amp;amp;face=0_0_203_260,https://scrap.kakaocdn.net/dn/bFySrO/hyWVWzk5GO/0PPrwkQEaFk8OrKRHcOnJ0/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514');&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;쓸모 있는 AI 서비스 만들기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;현직 개발자가 다양한 예제로 알려 주는 쉽고 빠른 나만의 AI 서비스 개발 가이드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전에는 e커머스같은 서비스가 핫했다면, 최근 가장 이슈가 되고 있는 IT 서비스는 ChatGPT같은 생성형 AI를 활용한 서비스가 될 것이다. 사실 예전같으면 어떤 웹서비스를 하려면 능력있는 개발자가 빵빵한 자원을 가지고 이리저리 실험하면서 잘 구축한 시스템 환경상에서 운영하는게 필요했을텐데, ChatGPT가 그런 능력있는 개발자 역할을 하게 되면서, 어떤 아이디어만 있으면 금방 서비스화할 수 있는 시대까지 도래했다. 실제로 생성형 AI를 활용한 서비스를 실제로 출시해 수익을 거둔 사례는 조금만 검색해봐도 많이 찾을 수 있다. 그럼 문제는 &quot;나도 과연 그런 서비스를 만들 수 있을까?&quot; 가 될 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20240830_002924.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EUGL1/btsJju5lOSv/T8R8qXDgH5vkt9iEUTZal0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EUGL1/btsJju5lOSv/T8R8qXDgH5vkt9iEUTZal0/img.jpg&quot; data-alt=&quot;쓸모 있는 AI 서비스 만들기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EUGL1/btsJju5lOSv/T8R8qXDgH5vkt9iEUTZal0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEUGL1%2FbtsJju5lOSv%2FT8R8qXDgH5vkt9iEUTZal0%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;3024&quot; height=&quot;4032&quot; data-filename=&quot;20240830_002924.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;쓸모 있는 AI 서비스 만들기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 소개하는 책은 앞에서 언급했던 &quot;나도 과연 AI 서비스를 만들 수 있을까?&quot;에 대한 어느 정도의 답을 제공하는 책이다. 딱 어느 하나에 한정된 서비스에 대한 예제뿐만 아니라 어떤 AI 서비스를 런칭하고자 할때 고민해야될 사항들, 예를 들어 유스 케이스에 대한 내용이 포함된 기획부터 실제 서비스하기 위한 코드 구현, 실제 실행까지 서비스 운용에 필요한 전반적인 내용을 다루고 있다. 어떻게 보면 AI 서비스부분만 빼면, 실제 웹서비스를 배포할때 필요한 일련의 과정들이 쭉 소개된 책이라고 봐도 될만큼 내용이 정형화되어 있었다. 책에서 크게 다루고 있는&amp;nbsp; AI 서비스 예제는 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TrOCR을 활용한 광학 문자 인식 서비스&lt;/li&gt;
&lt;li&gt;SAM (Segment Anything Model)을 활용한 배경 제거 서비스&lt;/li&gt;
&lt;li&gt;GPT 서비스를 활용한 이슈 요약 서비스&lt;/li&gt;
&lt;li&gt;Whisper 모델을 활용한 동영상 내 자막 생성 서비스&lt;/li&gt;
&lt;li&gt;Stable Diffusion을 활용한 이미지 생성 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딱 내용만 봐도 AI가 가장 잘 활용될 수 있는 영상, 자연어 처리, 음성에 대한 서비스를 직접 기획도 해보고 (물론 돈이 들기는 하지만) 실제 서버를 통해서 서비스를 구현도 해볼 수 있기 때문에 생성형 AI에 대한 막연한 두려움을 가지거나 뭔가 시작을 어디에서 시작해봐야 할지 모를 사람에게는 좋은 책이라고 할 수 있다.&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;나도 ChatGPT 서비스를 실제로 구독하고, 물론 도움도 많이 받긴 했었지만 이걸가지도 어떻게 사람에게 유용한 서비스를 만들 수 있을까 하는 고민을 종종 하곤 했는데, 그래도 이 책이 어느 정도의 실마리를 제공해서 조금씩 생각하는 것을 시도해보려고 한다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>ai</category>
      <category>쓸모있는 ai 서비스 만들기</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1124</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-useful-AI-service#entry1124comment</comments>
      <pubDate>Fri, 30 Aug 2024 01:03:23 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 한권으로 배우는 도커 &amp;amp; 쿠버네티스</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Docker-Kubernetes</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9392058056&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;한권으로 배우는 도커 &amp;amp; 쿠버네티스&lt;/a&gt;&quot; 책은 한빛미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1716736140239&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;한 권으로 배우는 도커 &amp;amp; 쿠버네티스&quot; data-og-description=&quot;STEP BY STEP, 원리부터 이해하는 도커 &amp;amp; 쿠버네티스 가이드&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9392058056&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9392058056&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/btO72A/hyV9Y6r3Ik/Pme72iKpn7t6kGT8rkp4d1/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/cek4Dz/hyWdpOSBKn/MTjpDr70xEnmJkR5xt0oA1/img.jpg?width=400&amp;amp;height=516&amp;amp;face=0_0_400_516&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9392058056&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9392058056&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/btO72A/hyV9Y6r3Ik/Pme72iKpn7t6kGT8rkp4d1/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/cek4Dz/hyWdpOSBKn/MTjpDr70xEnmJkR5xt0oA1/img.jpg?width=400&amp;amp;height=516&amp;amp;face=0_0_400_516');&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;한 권으로 배우는 도커 &amp;amp; 쿠버네티스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;STEP BY STEP, 원리부터 이해하는 도커 &amp;amp; 쿠버네티스 가이드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 연구를 하거나 관련 업무를 하는 사람이라면 도커나 쿠버네티스에 대한 내용은 많이 접할 것이다. 아무래도 모델 개발이나 환경을 설정하는 데 있어서 다양한 변경 요소들이 존재하기 때문에 각각의 환경에 따른 설정을 구분하고 효율적으로 관리하는 입장에서 보면 이런 컨테이너 기반의 개발 환경 구축이 필수적이다. 보통 MLOps라고 하는 학습 인프라 구축에서는 거의 없어서는 안될 툴이라고 할 수도 있겠다. 그래서인지 시중에도 관련 책들이 많이 번역되거나 저술이 되어 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20240527_000620.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;6831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cezV9n/btsHBNFBBRr/54Pcp7rDSh1kfLLqj7142k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cezV9n/btsHBNFBBRr/54Pcp7rDSh1kfLLqj7142k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cezV9n/btsHBNFBBRr/54Pcp7rDSh1kfLLqj7142k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcezV9n%2FbtsHBNFBBRr%2F54Pcp7rDSh1kfLLqj7142k%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;6936&quot; height=&quot;6831&quot; data-filename=&quot;20240527_000620.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;6831&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;책의 구성은 크게 2부로 나눠져 있으며, 전반부에는 이런 컨테이너 기반 기술의 기본인 도커의 이론적인 내용 및 도커를 활용한 django와 flask 서비스를 올려보는 실습으로 이뤄져 있으며, 후반부에는 도커를 관리할 수 있는 쿠버네티스와 역시 쿠버네티스를 활용한 웹서비스, CI/CD, 리소스 모니터링 등을 해볼 수 있는 예제들로 구성되어 있다. 역시 책의 특징이라 할 수 있는 예제 기반의 실습 형태로 되어 있기 때문에 도커나 쿠버네티스를 처음 접하는 사람들도 관련 예제를 통해서 학습을 할 수 있으며, 이때문에 분량이 여타 개발서에 비해 많다. (556페이지). 물론 책 가격이 비싼 느낌도 살짝 들긴 하지만, 그래도 풀컬러로 도식들이 표현되고 있어서 나름 읽기 편한 부분도 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 실습 기반의 책이라면 볼 수 있는 내용이 각 장별로 코드가 얼마나 잘 설명되어 있느냐, 또는 각 장에서 말하는 내용을 예제를 통해서 배울 수 있느냐 하는 부분인데, 이 책은 그런 부분에서 관련 내용을 전혀 모르는 사람에게 어필할 수 있을만큼 상세하게 코드 주석이나 관련 note를 상세하게 달아놓고 있다. 특히 공식 홈페이지에서 언급되지 않은 부분이나, 관련 내용을 다룰 때 참고가 필요한 내용에 대해서는 note를 통해서 부연 설명을 추가하고 있기 때문에 도움이 될 듯 하다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1123</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Docker-Kubernetes#entry1123comment</comments>
      <pubDate>Mon, 27 May 2024 00:52:02 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 읽고 나면 진짜 쉬워지는 자료 구조</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Data-Structures-the-fun-way</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;읽고나면 진짜 쉬워지는 자료구조&lt;/a&gt;&quot; 책은 길벗 출판사로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1715787534839&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;읽고 나면 진짜 쉬워지는 자료 구조&quot; data-og-description=&quot; &quot; data-og-host=&quot;www.gilbut.co.kr&quot; data-og-source-url=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004026&quot; data-og-url=&quot;http://www.gilbut.co.kr/book/view?bookcode=BN004026&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/buIi6c/hyV6fFZrOV/V7Rq26cUaPKVKOUQgIFvg1/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385,https://scrap.kakaocdn.net/dn/Oyt7s/hyV6coYQlW/90qjkqMUiZyI8A73T1HQJK/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385&quot;&gt;&lt;a href=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.gilbut.co.kr/book/view?bookcode=BN004026&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/buIi6c/hyV6fFZrOV/V7Rq26cUaPKVKOUQgIFvg1/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385,https://scrap.kakaocdn.net/dn/Oyt7s/hyV6coYQlW/90qjkqMUiZyI8A73T1HQJK/img.jpg?width=300&amp;amp;height=385&amp;amp;face=0_0_300_385');&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;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.gilbut.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SW와 관련한 업무를 하는 사람이라면 당연히 프로그래밍을 잘 하고 싶다는 생각을 갖고 있을 것이다. 그러면 프로그래밍을 잘하려면 어떻게 해야 할까? 나도 역시 이에 대한 답을 찾고 있는 중이다. 그래도 가장 효과적인 방법은 그만큼 프로그래밍 관련 서적도 읽고 문제도 풀어보면서 꾸준히 프로그래밍 연습을 하는게 아닐까 싶다. 문제는 프로그래밍이 연관된 주제가 다양하다는 것이다. 가장 기본적인 프로그래밍 언어와 자료구조 내용도 있을 것이고, 혹은 개발에 영향을 줄수 있는 방법론이나 개발 패턴에 대한 내용도 다루게 된다. 또 프로그래밍과 관련이 없더라도 인문학적 소양이나 생물학적 내용도 프로그래밍에 영향을 줄 수 있다. 결국 이 모든 것을 다 아우를 수 있는 똑똑한 사람이 프로그래밍을 잘하는 것 같다. 그래도 나같이 그런게 안되는 사람은 시간은 걸리겠지만 기본적인 내용부터 살펴보게 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_20240516_000327.jpg&quot; data-origin-width=&quot;2250&quot; data-origin-height=&quot;2288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPdOIs/btsHpLAQ4cY/7AURr6PlpJu0KwfFbWP2K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPdOIs/btsHpLAQ4cY/7AURr6PlpJu0KwfFbWP2K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPdOIs/btsHpLAQ4cY/7AURr6PlpJu0KwfFbWP2K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPdOIs%2FbtsHpLAQ4cY%2F7AURr6PlpJu0KwfFbWP2K0%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;564&quot; height=&quot;752&quot; data-filename=&quot;edited_20240516_000327.jpg&quot; data-origin-width=&quot;2250&quot; data-origin-height=&quot;2288&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 소개하는 &quot;읽고 나면 진짜 쉬워지는 자료 구조&quot; 책도 이런 기본적인 프로그래밍 소양 중 하나인 자료 구조에 대한 내용을 담고 있다. 책의 특징이라면 책에서 설명하는 자료구조의 예시코드가 pseudo code, 즉 언어에 종속되지 않은 일반적인 의사표현 언어로 표현되어 있다는 것이다. 그렇기 때문에 이 책을 읽는 독자가 C++ 개발자이던, Python 개발자이던 상관없이 언어에서 제공하는 기능을 활용하여 의사표현 언어를 구현하면 된다. 물론 구현이 잘 되어 있는 언어는 아예 자체 자료구조가 구현되어 있는 경우가 많기 하지만, 이렇게 책에서 제공하는 부분을 직접 구현하면서 실습해본다면 자료구조 학습에 큰 도움이 되리라 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이렇게 의사표현언어로 설명이 이뤄지다 보니, 책내의 예제 코드가 사실 그렇게 많지 않다. 그래서 자료 구조의 동작 방식이나 예시는 그림과 설명이 위주로 구술되어 있다. 그렇기 때문에 오히려 hands-on 방식으로 직접 실습해보면서 학습하는 방법보다는 책의 내용을 조금씩 음미하면서 읽는 것도 좋을 것 같다. 다행히 원서의 출판사인 No scratch press에서 출간하는 &quot;... the fun way&quot;, 굳이 직역하면 재미있게 학습하는 방법을 소개한 책의 특성을 그대로 가져와서 그런지 재미있는 예시들이 소개되어 있다.물론 이 예시들이 해당 절에서 설명하고자 하는 내용을 담고 있어 읽을 때 그렇게 거부감이 들지 않을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서 다루는 내용은 시중에서 다루는 자료구조 책과 비슷하다. 가장 기본적인 스택이나 큐, 트리 같은 자료구조 내용부터 해서 탐색 관련 내용, 그리고 후반부에는 해시 테이블과 Btree, Bloom filter 같은 내용을 내용을 소개하고 있다. 물론 알고리즘 계의 바이블이라고 할 수 있는 Introduction to Algotirhm에서 다루는 내용의 일부이긴 하지만, 저자는 책에서 추구하는 의도에 맞게 탐색과 자료구조를 잘 엮어서 설명했고, 오히려 그런 부분이 읽기에 좋았던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금이라고 기본 자료구조에 대해서 어려움을 느끼고 복습하려는 사람에게는 좋은 가이드가 될 책이라 생각한다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1122</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Data-Structures-the-fun-way#entry1122comment</comments>
      <pubDate>Thu, 16 May 2024 01:23:38 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 인사이드 머신러닝 인터뷰</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Inside-ML-Interview</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B4332324407&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;인사이드 머신러닝 인터뷰&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1714316836307&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;인사이드 머신러닝 인터뷰&quot; data-og-description=&quot;ML 면접을 위한 기본기부터 실무를 위한 실용적인 접근법까지&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B4332324407&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B4332324407&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bultxU/hyVVL0bPS6/TtuKSdNzo581q2l9AslQaK/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/bD5SuV/hyVVG5ELI8/cjCjy6jrwP3a6Z6Xalpl01/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B4332324407&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B4332324407&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bultxU/hyVVL0bPS6/TtuKSdNzo581q2l9AslQaK/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/bD5SuV/hyVVG5ELI8/cjCjy6jrwP3a6Z6Xalpl01/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514');&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;ML 면접을 위한 기본기부터 실무를 위한 실용적인 접근법까지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바쁜 하루이긴 하지만 적어도 한달에 한권이상 인공지능 관련 서적을 읽으려고 노력하고 있다. 그렇게 읽다보면 정말 다양한 서적들이 시중에 나와있는 것을 알 수 있다. 정석처럼 이론적인 내용을 쭉 설명해놓은 책도 있고, 혹은 코드나 실습을 위주로 설명하는 책들도 있다. 혹은 최근 인공지능 관련 업계로의 취업을 위해서 Q&amp;amp;A 형식으로 이론적인 내용과 나올 수 있는 예상 답변 등을 나열한 책 유형도 있다. 이번에 읽은 책은 마지막에 언급한 질답형 책이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20240427_004441.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;9248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6F26s/btsG0TSsyI6/WYYo5EpTQpOHtJo27gXNr1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6F26s/btsG0TSsyI6/WYYo5EpTQpOHtJo27gXNr1/img.jpg&quot; data-alt=&quot;인사이드 머신러닝 인터뷰&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6F26s/btsG0TSsyI6/WYYo5EpTQpOHtJo27gXNr1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6F26s%2FbtsG0TSsyI6%2FWYYo5EpTQpOHtJo27gXNr1%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;6936&quot; height=&quot;9248&quot; data-filename=&quot;20240427_004441.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;9248&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;사실 비슷한 유형의 책은 많이 나와있다. 제이펍에서 나온 &quot;데이터 과학자와 데이터 엔지니어를 위한 인터뷰 문답집&quot; 이란 책도 있고, 인공지능 취업은 아니지만 한빛미디어에서 개발자 취업자를 대상으로 출간된 &quot;개발자 기술 면접 노트&quot; 도 어떤 예상 질문에 대한 답변과 그 답변에 대한 이론적인 내용을 설명을 담고 있다. 보통 저자는 다년간의 경험을 쌓은 면접관으로써, 면접에서 통과하는데 어필할 수 있는 팁도 같이 제공되는 편이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이번에 소개할 책도 비슷한 유형을 가지면서 타이틀에 달려있다시피 194개의 문제에 대한 예상 답변을 기본지식, 코딩, 시스템 설계, 인프라 설계, 고급 문제 등의 유형으로 나눠서 설명을 하고 있다. 사실 이 194개의 문제가 커버하는 주제의 범주는 거의 인공지능이 다루는 모든 분야라고 할 수 있기 때문에 모든 내용이 이 책 안에 다 담겨져 있지 않고, 이를 뒷받침할 수 있는 참고 문헌들이 인용되어 나온다.&lt;/p&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;또한 면접관이 아무래도 NLP쪽 면접을 위주로 책을 작성해서 그런지 문제 유형이나 내용이 NLP 관련 내용과 이를 활용한 시스템 설계에 치중된 경향이 있다. NLP가 아닌 컴퓨터 비전쪽 취업을 준비하는 사람들도 물론 초반부에 소개되는 기본적인 ML 지식에 대한 내용을 읽을 수는 있겠지만, 뒤쪽에 언급되는 ML 코딩이나 고급 ML 기술쪽에서는 의외로 얻어갈 부분이 없을수도 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 짧기는 하지만 나름 생성 AI 쪽 내용도 부록 형식으로 담으면서 최신 경향을 담고자 노력을 했고, ML 관련 기본 지식부터 해서 시스템 설계/운용까지 다양한 분야에 대한 주제를 요약 형식으로 훑을 수 있다는 점은 책이 목적으로 하는 ML 쪽 인터뷰를 준비하는 사람에게는 &quot;잘만 활용한다면&quot; 정말 유용한 책이라고 할 수 있겠다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1121</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Inside-ML-Interview#entry1121comment</comments>
      <pubDate>Mon, 29 Apr 2024 00:39:59 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 딥러닝의 정석 2판</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Fundamentals-of-Deep-Learning-2nd</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9066007111&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;딥러닝의 정석 (2판)&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1711206074299&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;딥러닝의 정석 (2판)&quot; data-og-description=&quot;선형대수학과 확률로 시작하는 딥러닝의 정석. 실전에서의 구현을 위한 파이토치 기반 소스 코드 제공&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9066007111&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9066007111&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dMgIMr/hyVDGEvvMj/KB9OKlfaeifF9h0A4DEV91/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/jc1Wn/hyVDEs9nL4/EBcpsvo2H1sclrfWBmDXh1/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9066007111&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9066007111&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dMgIMr/hyVDGEvvMj/KB9OKlfaeifF9h0A4DEV91/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/jc1Wn/hyVDEs9nL4/EBcpsvo2H1sclrfWBmDXh1/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514');&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;딥러닝의 정석 (2판)&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;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;보통 시간이 날때마다 서점에서 딥러닝 관련 서적이 어떤게 있는지 찾아보곤 한다. 불과 몇년전만 해도 몇권 없던 딥러닝 개발 관련 책들이 이제는 정말 많아졌고, 요새는 LLM이나 생성AI 같은 최신 트렌드를 반영한 책들도 많이 나오고 있는것 같다. 개인적으로는 그런 최신 트렌드를 다룬 책들보다 원론적으로 딥러닝이 동작하는 원리에 대해서 잘 설명한 책이 나오면 좋겠다는 생각을 가지고 있고, 그런 내용을 위주로 원서나 역서를 찾아보는 편이다. 그런데 딥러닝 책이 정말 많다보니 다뤄지는 내용이나 설명하는 내용도 다양하다. 어떤 책은 밑바닥부터 처음부터 설명하는 책들도 있고, 기본적인 내용은 알고있다는 가정하에 바로 이론적인 내용을 다루는 책들도 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20240323_235651.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;9248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKSzGd/btsF2PcrVjd/Kn09qwfbdOKMRnqpoMsDvk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKSzGd/btsF2PcrVjd/Kn09qwfbdOKMRnqpoMsDvk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKSzGd/btsF2PcrVjd/Kn09qwfbdOKMRnqpoMsDvk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKSzGd%2FbtsF2PcrVjd%2FKn09qwfbdOKMRnqpoMsDvk%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;6936&quot; height=&quot;9248&quot; data-filename=&quot;20240323_235651.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;9248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 소개하는 &quot;딥러닝의 정석 (2판)&quot; 책은 6년전에 나왔던 1판에서 내용 구성 및 실습 환경이 변경되어 출간된 책이다. 당시에는 텐서플로로 진행했던 실습 내용이 이번에는 파이토치로 변경되었다. 거기에 이해에 필요한 수학적인 배경까지 조금더 보강되어서 출간되었다. 그렇게 보면 앞에서 언급한 책의 기준으로 놓고 보자면 이론과 실습이 적절하게 배치된 책이 되겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;책을 읽어보면 딥러닝 이해에 필요한 선형대수학과 확률 관련 내용이 초반에 다뤄지고 있어, 처음 딥러닝을 접하는 사람들이 느낄법한 수학적인 이해의 어려움이나 궁금증을 해소할 수 있게 해놨다. 물론 기초 내용이기 때문에 분량도 많지 않고, 심도있게 다뤄지지 않지만, 그래도 뒷부분에 다뤄질 내용의 배경에 대해서 잘 배치가 된 것 같아 좋았다. 또한 내용을 설명할 수 있는 도식, 특히 모델의 구조에 대한 전체적인 그림들이 상당수 담겨져 있어, 내가 만든 모델이 이런 형태를 띄는구나를 보기에 좋았던 것 같다. 그리고 2판이 비교적 최근에 나온지라 어텐션이나 메모리 증강형 모델에 대한 설명도 포함되어 있어, 해당 모델에 대해서 직접 구현해보고 공부해보고자 하는 사람에게 도움이 될 듯 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;그런데 뭔가 &quot;정석&quot;이란 타이틀을 달고 있는 책이기에 책의 전체 분량이라던가 각 주제별 분량이 균형적이지 않은 부분이 조금 아쉬운 감이 있다. 사실 1판때도 언급된 내용이기도 한다. 영상이라던가 NLP, 강화학습 관련 내용이 자세하게 다뤄졌다기 보다는 조금 NLP에 편중되어 설명된 감이 있다. 특히 강화학습 관련 내용은 조금 실망스러울 정도로 내용이 정말 짧게 다뤄졌다. 영상쪽도 최근 기술이 언급되었다기 보다는 일반적인 예제에 대한 내용을 다루고 있었다. 물론 시퀀스 모델이나 생성모델, 메모리 증강형 모델에 대한 내용은 딥러닝 부분의 상당수를 다루고 있고, 내용 또한 디테일하게 잘 설명되어 있다. 그래서 관련 연구를 하거나 공부하는 사람에게는 정말 좋은 책이 될 수 있다. (아마 관련 내용을 다루는 저자의 성향이겠지만...) 그래도 이 내용으로 &quot;정석&quot;이라고 하기엔 조금 부족한 부분이 아닐까 생각한다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>딥러닝의 정석</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1120</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Fundamentals-of-Deep-Learning-2nd#entry1120comment</comments>
      <pubDate>Sun, 24 Mar 2024 01:14:17 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 러닝 레이</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Learning-Ray</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2311035925&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;러닝 레이&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1708871206974&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;러닝 레이&quot; data-og-description=&quot;텐서플로, 파이토치의 속도를 높이는 분산 라이브러리&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2311035925&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2311035925&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bur9ae/hyVqp3D3xK/H5rjL1qtUr94DkLLkrtpyK/img.png?width=220&amp;amp;height=260&amp;amp;face=0_0_220_260,https://scrap.kakaocdn.net/dn/BodYz/hyVmZyJJbP/Hz04uAD1NLeoiemiZvFNWK/img.png?width=400&amp;amp;height=473&amp;amp;face=0_0_400_473,https://scrap.kakaocdn.net/dn/C0c0Y/hyVqglkEqg/Tbc75oHkr0jgrzKp7Fss11/img.jpg?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2311035925&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2311035925&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bur9ae/hyVqp3D3xK/H5rjL1qtUr94DkLLkrtpyK/img.png?width=220&amp;amp;height=260&amp;amp;face=0_0_220_260,https://scrap.kakaocdn.net/dn/BodYz/hyVmZyJJbP/Hz04uAD1NLeoiemiZvFNWK/img.png?width=400&amp;amp;height=473&amp;amp;face=0_0_400_473,https://scrap.kakaocdn.net/dn/C0c0Y/hyVqglkEqg/Tbc75oHkr0jgrzKp7Fss11/img.jpg?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&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;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제는 단순히 머신러닝 테스크를 로컬에서 돌리는 것 자체가 무의미한 시대에 들어서고 있다. 모델 자체의 크기도 점점 커짐과 더불어, 모델을 학습시킬 데이터의 사이즈도 점점 커져간다. 그래서 이제는 뭔가 인공지능 알고리즘의 파워라기 보다는 ML 인프라를 얼마나 효율적으로 사용하느냐가 모델 성능을 좌우하는 요인 중 하나가 된 것 같다. 이런 필요성 덕분에 MLOps의 개념도 예전보다 점점 중요하게 다뤄지는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 ML 인프라를 쉽고, 효과적으로 구축해줄 수 있는 툴이 있겠지만, 많이 사용되는 툴 중 하나가 이 책에서 다룰 Ray가 아닐까 싶다. Ray는 Large Scale ML에 대응하기 위한 분산처리 프레임워크이고, 처음에는 버클리의 RISE lab에서 open source로 운영하던 프로젝트가 현재에는 anyscale이란 회사에서 계속 운영하고 있다. 그냥 어떻게 간단하게만 보면 scalable ML platform으로만 볼 수 있겠지만, 다양한 모듈을 통해서 강화학습이나 Hyperparameter tuning, serving까지 다양한 기능을 하나의 플랫폼으로 제공하고 있다. 뭔가 현업에서 분산처리가 필요하고, 효과적인 인공지능 학습을 추구하는 일을 해야 한다면 아마 Ray는 한번쯤 들어봤을 것이다. 다만 아직까지 우리나라에서는 이를 활발하게 사용하는 사례가 아직까지는 많이 없는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 개인적으로도 ray의 존재에 대해서는 일찍 알고 있었지만, 튜토리얼이나 공개되어 있는 예제들이 뭔가 내가 하고 있는 업무로 응용하기 어려운 부분이 있어서, 아 뭔가 한글로 된 자료나 책이 있으면 좋겠다 싶었는데, 이번에 번역본이 나왔다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20240225_230937.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;9248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BswMs/btsFjLBym94/kNoHjuydSeHUOwSUYATjqK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BswMs/btsFjLBym94/kNoHjuydSeHUOwSUYATjqK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BswMs/btsFjLBym94/kNoHjuydSeHUOwSUYATjqK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBswMs%2FbtsFjLBym94%2FkNoHjuydSeHUOwSUYATjqK%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;6936&quot; height=&quot;9248&quot; data-filename=&quot;20240225_230937.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;9248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책은 기본적으로 분산 학습에 대한 이해가 어느정도 되어 있다고 가정한 상태에서 Ray의 핵습 모듈인 Ray core와 Ray tune, RLlib 등의 설명과 이와 관련된 예시를 제공하고 있다. 특히 MLOps와 관련된 업무에 Ray를 적용할 경우, 뒷부분에서 다루는 분산 모델 훈련이나 스케일링, serving, 그리고 ray air를 다루는 후반부를 살펴보면 관련된 내용을 얻을 수 있을 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책 자체가 그렇게 두껍지 않고, 그만큼 기본적인 내용을 아는 것을 전제로 설명하고 있어 전체적으로 간결하게 내용이 구성되어 있다. 어떻게 보면 기존의 오라일리의 &quot;Learning&quot; 시리즈처럼 뭔가 새로운 것에 대한 설명보다는 딱 실무에 최적화되어 있는 책이라고 할 수 있다. 개인적으로는 올해 새로하는 일에 Ray RLlib과 분산 학습 환경을 구성하고자 하는 목표를 가지고 있는데, 나름 이 책을 통해서 관련 내용을 얻었고, 조금 도움을 받을 수 있을 듯 하다. 특히 RLlib과 분산 어플리케이션에 소개되어 있는 내용은 강화학습을 어떻게 분산해서 처리할 수 있을까를 고민하는 사람에게는 도움이 될만한 내용을 다루고 있다. 또한 굳이 강화학습이 아니더라도, 지도학습에서 응용할 수 있는 예제도 포함되어 있기에 포괄적으로 프레임워크를 활용해보고자 하는 사람에게는 좋을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책의 아쉬운 점이라면 물론 대다수의 번역본이 가지는 한계일 수 있겠지만, 원서가 나온지 1년이 되면서 ray도 같이 outdate된 점이다. 현재 2.9 버전때까지 나온 ray 인데, 책에서 다루는 ray 2.2보다는 그래도 나름의 최신 버전으로라도 책이나 예제 구성이 되었으면 좋지 않았을까 하는 내용이 조금 들긴 했다. 물론 과거 버전으로도 대부분의 기능들이 계속 유지되고 있긴 하지만 말이다. (개인적으로도 최근 rllib을 테스트하다가 numpy 버전에 따른 문제가 조금 있어서, 아마 버전에 따른 문제가 있을 것 같긴 하다..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책의 큰 의미는 ray에 대해서 처음으로 출간된 한글 번역서라는 것이다. 그동안 영어로 인해서 조금 멀게 느껴졌던 ray를 활용하기 쉬워졌다는 점에서 잘 읽었다는 생각이 들었다. 특히 번역 내용도 깔끔하고 딱 실무에 적용하게 내용이 구성되어 있던 부분이 책 분량도 그렇고 개발자가 읽기에 딱 좋았다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1119</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Learning-Ray#entry1119comment</comments>
      <pubDate>Mon, 26 Feb 2024 00:17:12 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 머신러닝 엔지니어링 인 액션</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Machine-Learning-Engineering-in-Action</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2681655701&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;머신러닝 엔지니어링 인 액션&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1703433402959&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;머신러닝 엔지니어링 인 액션&quot; data-og-description=&quot;성공하는 머신러닝 프로젝트의 비밀. 순서도와 그림으로 살펴보는 머신러닝 프로젝트 A to Z&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2681655701&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2681655701&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bp1Rr1/hyUPIjHOb7/K4BFd6jbo1UC0tYzSW3tOK/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/4UFn1/hyUTJnIwyp/hhCJmwKWHLGz7a1PzVlvH0/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/cl0zgo/hyUPLU1yfo/5lp1cxRMSPOf8WuVXp7G0k/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2681655701&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2681655701&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bp1Rr1/hyUPIjHOb7/K4BFd6jbo1UC0tYzSW3tOK/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/4UFn1/hyUTJnIwyp/hhCJmwKWHLGz7a1PzVlvH0/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/cl0zgo/hyUPLU1yfo/5lp1cxRMSPOf8WuVXp7G0k/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514');&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;성공하는 머신러닝 프로젝트의 비밀. 순서도와 그림으로 살펴보는 머신러닝 프로젝트 A to Z&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 업계에서 다루는 모델들의 학습이나 관리의 정형화에 대한 중요성이 부각되다보니 새롭게 등장한 주제 중 하나가 MLOps 라는 것이다. 물론 개발쪽에서 일하는 사람이라면 기존에는 DevOps라는 용어로 불리고 있다가, 이를 머신러닝 분야로 접근한 주제가 MLOps인 것으로 알고 있다. 관련 책들이 이제야 많이 나오고 있지만, 딱히 번역본으로는 소개되지 않고 있다가 그래도 출판사쪽에서 관련 서적이 나오고 있기에 최근에 나온 서적 중 한권에 대해서 소개해보고자 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20231225_004751.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;2870&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wta46/btsCG5bfObi/iYjmmwmzIzRZzuk73ethf1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wta46/btsCG5bfObi/iYjmmwmzIzRZzuk73ethf1/img.jpg&quot; data-alt=&quot;머신러닝 엔지니어링 인 액션&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wta46/btsCG5bfObi/iYjmmwmzIzRZzuk73ethf1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWta46%2FbtsCG5bfObi%2FiYjmmwmzIzRZzuk73ethf1%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;2268&quot; height=&quot;2870&quot; data-filename=&quot;20231225_004751.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;2870&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;이 책은 Manning 출판사에서 시리즈 중 하나인 &quot;인 액션&quot; 중 Machine Learning Engineering in Action의 번역본이다. 사실 사실 다른 주제의 인 액션의 책들도 비슷한 성격을 띄지만 거의 대부분 책들이 예제도 많이 담겨져 있고, 실습 지향적인 성격이 매우 강하다. 이 책도 역시 많은 실습 코드와 관련 설명이 담겨지면서 분량이 여타 책에 비하면 700여 페이지에 가까울 정도로 많다. (물론 책의 분량에 비례한 만큼 책값도 역시 조금 세다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분량만큼이나 책에서 다루는 내용이나 각 주제별로 담고 있는 내용이 제법 많다. 그래서 단기간에 MLOps에 대해서 파악하려는 사람보다는 현재 연구하는 주제를 어떻게 하면 실무로 적용할 수 있을까 고민하고 차근차근 실천해보려는 사람에게 좋은 주제를 담고 있다. 특히 3부의 주제로 담고 있는 프로덕션 머신러닝 코드 개발 부분은 정말로 실용적으로 머신러닝 기술을 접목시켜보고자 하는 사람들에게 도움이 될만한 내용이 소개되어 있다. 특히 개인적인 입장에서도 현업에서 머신러닝 기술을 양산에 적용하고 반영한다는 것이 학계에서 새로운 기술을 개발하는 것 만큼이나 어렵다는 것을 많이 느끼고, 또 이런 MLOps에 대한 필요성도 절실히 느끼는 입장에서는 해당 내용이 다음의 프로젝트에서는 이런 것을 반영해보면 좋겠다는 생각이 들었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;아 그리고 이 책의 특징 중 하나는 플로우차트가 &quot;정말&quot; 많다. 아무래도 다양한 사용 케이스나 MLOps에서 소개하는 프로세스를 도식화하다 보니 여타 다른 책들에 비하면 플로우차트가 많이 나오게 된거 같다. (나도 읽으면서 나는 어디에 속하나 하나씩 넣어보면서 읽게 된거 같다.) 그만큼 책의 내용이 그림으로 잘 표현되어 있고, 그만큼 MLOps의 유즈케이스에 대해서 잘 소개되어 있는 것 같았다. 사실 책의 주제가 어떤 기술이라기 보다는 프로세스의 이해에 다루는 성격이 큰편이라 이론적인 내용이 많이 다뤄질 줄 알았는데, 생각보다 시각화를 위한 예제 코드들이 많이 담겨져 있다. 역시 이 부분도 뭔가 의사 결정을 위한 정보를 제공하는데 있어 도움이 될 듯 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 최근에 읽은 MLOps 책 중 가장 실용적이면서 읽을만한 내용들이 많이 담긴 &quot;풍족한&quot; 책이었다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1118</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Machine-Learning-Engineering-in-Action#entry1118comment</comments>
      <pubDate>Mon, 25 Dec 2023 01:43:42 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 알고리즘 인사이드 with 파이썬</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-algorithm-inside-with-python</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B5167978008&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;알고리즘 인사이드 with 파이썬&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1701007049106&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;알고리즘 인사이드 with 파이썬&quot; data-og-description=&quot;&amp;ldquo;17년 차 베테랑 개발자가 직접 풀고 해설한다!&amp;rdquo; 학생, 취준생, 주니어, 역량 개발이 필요한 모든 개발자를 위한 86개 문제 풀이로 사고력을 키우는 알고리즘 &amp;amp; 자료구조 입문서&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B5167978008&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B5167978008&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bpUSUQ/hyUFalkfDU/mk34J48ktk2LV9hoVQbtE0/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/helr5/hyUE6iVpE4/F84ZKxOt5Hbj5Q1z4KYq8k/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B5167978008&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B5167978008&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bpUSUQ/hyUFalkfDU/mk34J48ktk2LV9hoVQbtE0/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/helr5/hyUE6iVpE4/F84ZKxOt5Hbj5Q1z4KYq8k/img.jpg?width=400&amp;amp;height=514&amp;amp;face=0_0_400_514');&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;알고리즘 인사이드 with 파이썬&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;17년 차 베테랑 개발자가 직접 풀고 해설한다!&amp;rdquo; 학생, 취준생, 주니어, 역량 개발이 필요한 모든 개발자를 위한 86개 문제 풀이로 사고력을 키우는 알고리즘 &amp;amp; 자료구조 입문서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 이 책까지 찾았다면 코딩테스트를 준비하건, 알고리즘 공부를 하건 고민을 많이 했을 것 같다. 그도 그럴것이, 시중에는 정말로 다양한 알고리즘 책이나 강의자료들이 정말 많다. 소위 IT업계의 상위권이라고 할수 있는 네카라쿠배에 가기 위해서라도 관련 내용은 알고 있어야 되고, 무엇보다 어떤 소프트웨어가 동작하는 것을 이해하기 위해서는 알고리즘에 대한 이해가 필요하다. 다만 최근의 경향은 뭔가 이해한다 라기 보다는 그냥 경향에 대해서 약간 주입식의 형태로 암기하는 식으로 이뤄지고 있는 것 같아서 조금 아쉽긴 하다. (나도 뭔가 고민해야 될 문제가 있으면 혼자서 고민해보기 보다는 그냥 외워서 하는 태도도 있어서 반성한다...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;어쨌든 다양한 코딩 관련 서적들이 있고, 다양한 부류로 나눠서 볼 수 있다. 아무래도 공부하는 언어에 따라서 책을 구분할 수 있겠고, 아니면 leetcode 나 정보올림피아드 기출 풀이와 해설을 다룬 책들이 있을 수 있고, 혹은 아예 효율적으로 이론적인 내용만 담으면서 저렴한(?) 책들도 있다. 물론 어떤 책이 가장 좋고, 나쁘다의 기준은 책마다 추구하는 과점이 다 다르기에 그걸 표현할수는 없을 것 같고, 개인적으로는 딱 책의 전체적인 난도가 일관적이면서 설명이나 도식화가 잘되어 있는 책이 보기에 조금더 좋은 책이라고 생각한다. 이런 관점에서 한번 책을 소개해보고자 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20231126_225131.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;2533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJRTfV/btsA0ciVGnR/a2u31tJ7sSXGpewUaf1zz1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJRTfV/btsA0ciVGnR/a2u31tJ7sSXGpewUaf1zz1/img.jpg&quot; data-alt=&quot;알고리즘 인사이드 with 파이썬&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJRTfV/btsA0ciVGnR/a2u31tJ7sSXGpewUaf1zz1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJRTfV%2FbtsA0ciVGnR%2Fa2u31tJ7sSXGpewUaf1zz1%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;2268&quot; height=&quot;2533&quot; data-filename=&quot;20231126_225131.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;2533&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;알고리즘 인사이드 with 파이썬&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책은 앞에서 소개한 것처럼 수많은 알고리즘 관련 책 중에서 파이썬을 타겟팅하면서 leetcode에 나온 문제 중 저자가 중요하다고 생각한 문제 86개에 대한 해설을 담고 있다. 물론 막연하게 기출 문제를 담고 해설하지 않고, 문제의 큰 주제에 따라 분류하고, 해당 주제를 이해하는데 필요한 기본적인 자료구조나 해결 전략을 앞부분에서 소개하고 있다.&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;책을 읽는 조금 불편한 부분도 있긴 했다. 일반적인 개발서에 익숙해져서 그런건지는 모르겠지만, 해결코드와 설명을 같이 놓고 보기가 조금 힘들었다. 물론 설명 부분에서 해결 코드의 라인번호와 같이 자세히 설명은 되어 있으나, 적어도 해결코드에도 간단한 주석정도 달아주었으면 조금 더 이해에 도움이 되지 않았을까 싶은 생각이 들었다. 그리고 책의 구성 방식이 기본적인 자료구조와 알고리즘을 쭉 설명하고, 뒷부분에서 이와 관련된 leetcode 기출을 해설하는 방식으로 되어 있는데, 차라리 그 큰 주제에서 알고리즘을 설명했으면 조금더 책 읽는데 편하지 않았을 것 같았다. (뒤에서 트리 관련 기출을 보다가 기본 알고리즘 부분으로 돌아가서 계속 왔다갔다 읽는게 조금 번거롭긴 했다...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떻게 보면 위의 평은 개인적인 주관이자 여러 코딩테스트 준비책을 읽고 비교되는 부분에 대해서 기술을 했다. 그래도 적어도 이 책이 추구하는 것처럼 다양한 leetcode 기출을 통해서 대부분의 기본 알고리즘을 다루고자 했고, 또한 충분한 도식과 설명을 통해서 초중급자들이 접근하기에는 좋은 책임이 틀림없다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>LeetCode</category>
      <category>알고리즘</category>
      <category>파이썬</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1117</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-algorithm-inside-with-python#entry1117comment</comments>
      <pubDate>Sun, 26 Nov 2023 23:59:17 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 개발자를 넘어 기술 리더로 가는 길</title>
      <link>https://talkingaboutme.tistory.com/entry/staff-engineers-path</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://www.decoding.co.kr/product/%ea%b0%9c%eb%b0%9c%ec%9e%90%eb%a5%bc%eb%84%98%ec%96%b4%ea%b8%b0%ec%88%a0%eb%a6%ac%eb%8d%94%eb%a1%9c%ea%b0%80%eb%8a%94%ea%b8%b8/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;개발자를 넘어 기술 리더로 가는 길&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1698590560086&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;개발자를 넘어 기술 리더로 가는 길&quot; data-og-description=&quot;기술 전문성을 계속 키우고 싶은 개발자들이 기술 리더로 가는 출발점, 스태프 엔지니어 지난 수년 동안 기업에서는 유능한 개발자들에게 매니저 직책을 부여해 왔다. 그러나 기술 리더십 능력&quot; data-og-host=&quot;www.decoding.co.kr&quot; data-og-source-url=&quot;https://www.decoding.co.kr/product/%ea%b0%9c%eb%b0%9c%ec%9e%90%eb%a5%bc%eb%84%98%ec%96%b4%ea%b8%b0%ec%88%a0%eb%a6%ac%eb%8d%94%eb%a1%9c%ea%b0%80%eb%8a%94%ea%b8%b8/&quot; data-og-url=&quot;https://www.decoding.co.kr/product/%ea%b0%9c%eb%b0%9c%ec%9e%90%eb%a5%bc%eb%84%98%ec%96%b4%ea%b8%b0%ec%88%a0%eb%a6%ac%eb%8d%94%eb%a1%9c%ea%b0%80%eb%8a%94%ea%b8%b8/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/oVq2h/hyUnLMZunL/ZUTL1th13LPtkjOXHGwBkK/img.jpg?width=797&amp;amp;height=1024&amp;amp;face=0_0_797_1024,https://scrap.kakaocdn.net/dn/mjD37/hyUkfPOhbc/fYktk2gs5ubVLHxJOsXwj0/img.jpg?width=797&amp;amp;height=1024&amp;amp;face=0_0_797_1024,https://scrap.kakaocdn.net/dn/L0X1Z/hyUnPBQF61/h1EuhZFt47fppLEgbyqDk1/img.jpg?width=600&amp;amp;height=771&amp;amp;face=0_0_600_771&quot;&gt;&lt;a href=&quot;https://www.decoding.co.kr/product/%ea%b0%9c%eb%b0%9c%ec%9e%90%eb%a5%bc%eb%84%98%ec%96%b4%ea%b8%b0%ec%88%a0%eb%a6%ac%eb%8d%94%eb%a1%9c%ea%b0%80%eb%8a%94%ea%b8%b8/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.decoding.co.kr/product/%ea%b0%9c%eb%b0%9c%ec%9e%90%eb%a5%bc%eb%84%98%ec%96%b4%ea%b8%b0%ec%88%a0%eb%a6%ac%eb%8d%94%eb%a1%9c%ea%b0%80%eb%8a%94%ea%b8%b8/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/oVq2h/hyUnLMZunL/ZUTL1th13LPtkjOXHGwBkK/img.jpg?width=797&amp;amp;height=1024&amp;amp;face=0_0_797_1024,https://scrap.kakaocdn.net/dn/mjD37/hyUkfPOhbc/fYktk2gs5ubVLHxJOsXwj0/img.jpg?width=797&amp;amp;height=1024&amp;amp;face=0_0_797_1024,https://scrap.kakaocdn.net/dn/L0X1Z/hyUnPBQF61/h1EuhZFt47fppLEgbyqDk1/img.jpg?width=600&amp;amp;height=771&amp;amp;face=0_0_600_771');&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.decoding.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20231029_232856.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;2899&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvnNO6/btszjtWjmik/HV6lqI2idmKpuAxGDVn0k1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvnNO6/btszjtWjmik/HV6lqI2idmKpuAxGDVn0k1/img.jpg&quot; data-alt=&quot;개발자를 넘어 기술 리더로 가는 길&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvnNO6/btszjtWjmik/HV6lqI2idmKpuAxGDVn0k1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvnNO6%2FbtszjtWjmik%2FHV6lqI2idmKpuAxGDVn0k1%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;2268&quot; height=&quot;2899&quot; data-filename=&quot;20231029_232856.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;2899&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;이번에 다루는 책은 이런 스태프 엔지니어의 역량과 성공적인 업무 수행을 위해 지향하는 방향에 대해서 언급되어 있는 책이다. 기존에 주로 읽던 책이 개발 전문 서적이라면 이번에 읽은 책은 약간 자기 개발서에 가까운 책이라고 할 수 있다. 그래서 책의 내용이 복잡하거나 어떤 사전 지식이 필요하지 않다. 이 책의 주요 주제인 &quot;스태프 엔지니어&quot;에 대한 설명도 첫장에 자세하게 설명되어 있기 때문에 소프트웨어에 몸담고 있는 사람이라면 그냥 편안한 마음으로 책을 읽으면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가만히 책을 읽다보면, 나만 그렇게 느낀건지는 모르겠지만 책에서 다뤄지는 내용이 참 익숙하다. 꼭 회사에서 일하다보면 겪는 일들의 스냅샷들이 나열되어 있다. 조직을 운영하는 것이며, 일을 하는 자세이며, 멘토링과 관련된 내용 등... 타이틀이야 스태프 엔지니어가 지향해야 할 방향에 대해서 서술한 책일듯 싶지만, 어떻게 보면 언젠가는 스태프 엔지니어가 될 대부분의 엔지니어들이 갖춰야 할 자세에 대해서 서술되어 있는 책이라고 생각한다. 그만큼 현재의 위치에서 리더가 가질법한 생각이나 의사소통 능력 등을 가진다면 뭔가 회사의 프로젝트가 잘 굴러가지 않을까? 하는 생각도 든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 인상깊게 읽었던 부분은 3부에서 다룬 &quot;조직차원에서의 레벨업&quot; 부분이다. 물론 같이 일하는 사람들이 다 좋은 사람들이고 일하기 편한 사람들이긴 하지만, 궁극적으로는 조직 차원에서의 역량이 향상되어야 프로젝트의 질이나 의사소통이 원할하게 이뤄질 수 있고, 이에 대한 가교 역할을 기술 리더가 수행할 부분이다. 그래서 해당 파트에서는 크게 롤모델 설계와 선한 영향력 전파, 그리고 경력 사다리 설계라는 세가지 주제를 통해서 조직 차원에서의 레벨업을 수행하는 방법에 대해 서술했다. 사실 이 부분을 읽으면서 공감가는 부분은 기술 리더는 구성원들로부터 기술적인 부분에 있어서 모범을 보이고, 부족함을 채워줄 수 있도록 지속적으로 학습이 이뤄져야 한다는 부분이었다. 물론 스태프 엔지니어인 이상 현업의 개발 업무보다는 매니징 업무나 보고 업무가 조금 더 비중이 커질텐데, 그런 와중에도 학습과 연구를 통해서 새로운 기술 트랜드를 계속 숙지하고 있어야 한다는 부분이다. (사실 이 부분을 읽다보면 스태프 엔지니어가 참 어려운 직무겠구나 싶었다...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서 다루는 내용이 뭔가 개발적인 내용이 아니라 뭔가 어떤 비기를 바라는 사람이 읽으면 조금 맥빠질 수 있겠지만, 뭔가 조금 쉬는 틈이 있고, 앞으로 조금 더 높은 위치에서 일하고 싶은 사람이라면 가벼운 마음으로 책을 한번 읽어봤으면 좋겠다. 분명 책에서 얻어가는 부분이 있을거라 생각한다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>Staff Engineer's Path</category>
      <category>기술리더</category>
      <category>스태프 엔지니어</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1116</guid>
      <comments>https://talkingaboutme.tistory.com/entry/staff-engineers-path#entry1116comment</comments>
      <pubDate>Mon, 30 Oct 2023 00:32:17 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 코딩 뇌를 깨우는 파이썬</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Introduction-to-Computation-and-Programming-Using-Python</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://www.hanbit.co.kr/media/books/book_view.html?p_code=B6171497304&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코딩 뇌를 깨우는 파이썬&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1695564442347&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;코딩 뇌를 깨우는 파이썬&quot; data-og-description=&quot;잠자는 코딩 뇌를 깨워라 파이썬 기초부터 머신러닝까지 한 권에!&quot; data-og-host=&quot;www.hanbit.co.kr&quot; data-og-source-url=&quot;https://www.hanbit.co.kr/media/books/book_view.html?p_code=B6171497304&quot; data-og-url=&quot;https://www.hanbit.co.kr/media/books/book_view.html?p_code=B6171497304&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dzIfeM/hyT2xO6Uxt/NstRC2cMAPTafIKtJthWg1/img.png?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/nyON6/hyTY0rT2BX/KO3nAdQMSh0YK4lAuXEkwk/img.jpg?width=700&amp;amp;height=908&amp;amp;face=0_0_700_908,https://scrap.kakaocdn.net/dn/KFWRp/hyT2z7eWY1/PLUocMveJ60MTXxnXK1Fwk/img.jpg?width=700&amp;amp;height=876&amp;amp;face=0_0_700_876&quot;&gt;&lt;a href=&quot;https://www.hanbit.co.kr/media/books/book_view.html?p_code=B6171497304&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.hanbit.co.kr/media/books/book_view.html?p_code=B6171497304&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dzIfeM/hyT2xO6Uxt/NstRC2cMAPTafIKtJthWg1/img.png?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/nyON6/hyTY0rT2BX/KO3nAdQMSh0YK4lAuXEkwk/img.jpg?width=700&amp;amp;height=908&amp;amp;face=0_0_700_908,https://scrap.kakaocdn.net/dn/KFWRp/hyT2z7eWY1/PLUocMveJ60MTXxnXK1Fwk/img.jpg?width=700&amp;amp;height=876&amp;amp;face=0_0_700_876');&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.hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 MOOC를 열심히 듣기 시작한 것은 2014년부터였다. 그때 대표적으로 활용했던 사이트가 coursera랑 edX였었는데, Stanford 대학교 강의가 자주 열리는 coursera와는 다르게 edX에는 MIT 강의가 무료로 열리곤 했었다. (예전에는 강의 수강 후 수료만 하면 인증서를 주곤했었는데, 최근에는 다 유료화되면서 바뀌었다.))&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그때 뭔가 새로운 것을 배워야겠다는 생각에 처음 선택한 주제가 데이터 분석쪽이었고, 그러면서 읽었던 책이 &quot;파이썬 라이브러리를 활용한 데이터 분석&quot;이란 책이었고, 강의는 Introduction to Computational Thinking and Data Science였다. 그중 강의에 대해서 잠깐 소개하자면, 이 강의는 6.00.2x 라는 강의 코드를 가지는, 즉 컴퓨터 관련 과목을 수강하는 사람이 제일 처음 수강하는 과목 중 하나인데, 선수 과목인 Introduction to Computer Science and Programming using Python (6.00.1x)에서 알고리즘 및 데이터 과학쪽인 주제를 더 다루는 과목이다. 실제로 과목을 들어보면 교수가 진짜 알기 쉬운 예제로 이론적인 내용을 설명한다. 과목을 듣는 내내 뭔가 복잡하게 설명하는 것을 본적이 없고, 전혀 모르는 사람이 들어도 재미있게 과제하면서 들을 수 있던 과목이었다. 나도 그때 과제랑 같이 수업을 하면서 많이 배우고 현재 하는 일에 대한 발판을 다졌던 것 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edx.png&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EXRBm/btsvnfzuZ8A/vXvgfjF9EkjJEvjivKbyu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EXRBm/btsvnfzuZ8A/vXvgfjF9EkjJEvjivKbyu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EXRBm/btsvnfzuZ8A/vXvgfjF9EkjJEvjivKbyu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEXRBm%2FbtsvnfzuZ8A%2FvXvgfjF9EkjJEvjivKbyu1%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;961&quot; height=&quot;435&quot; data-filename=&quot;edx.png&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그때도 이 강의가 책으로 나오면 좋을 거 같다는 생각을 했었는데, 21년에 나온 버전이 번역되어 출간된 것을 이제야 읽어보았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230924_225107.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;9248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eMw7T5/btsvdpcxcMN/fQO4KFpkktSeho1y19kwzk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eMw7T5/btsvdpcxcMN/fQO4KFpkktSeho1y19kwzk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eMw7T5/btsvdpcxcMN/fQO4KFpkktSeho1y19kwzk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeMw7T5%2FbtsvdpcxcMN%2FfQO4KFpkktSeho1y19kwzk%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;6936&quot; height=&quot;9248&quot; data-filename=&quot;20230924_225107.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;9248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서 다루는 내용은 앞에서 소개했던 6.00.1x와 6.00.2x에 대한 내용을 모두 담고 있다. 다시 말해서 파이썬에 대한 기초 문법 소개를 하면서 후반부에는 알고리즘과 데이터분석, 더 나아가 머신러닝과 관련된 내용을 담고 있다. 책의 수준은 입문에 해당하는 내용이고, 뒷부분에서 머신러닝 내용을 담고 있긴 하지만, 이 내용 보다는 사실 이 머신러닝 내용을 이해하는데 필요한 선수 지식을 설명하는데 상당수의 분량을 할애하고 있다. 그리고 서문에도 언급되어 있는 내용이지만 책의 분량은 2학기의 학과 수업 내용을 커버하고 있기 때문에 책 분량 역시 상당하다. 그래서 뭔가 알고리즘이나 데이터 분석, 머신러닝에 대한 지식이 있는 사람보다는 처음 컴퓨터 과학을 접하고, 파이썬 3를 처음 공부하는 사람이 주요 독자가 되겠다. 그렇다고 뭔가 배웠던 내용을 복습하고 싶은 사람에게도 추천할만한 것이 책에서 담고 있는 내용이 쉬운 예제를 대상으로 설명을 하고는 있지만 설명이 쉽게 되어 있다는 것이지 주제가 너무 쉽다는 것은 아니다. 좀 다르게 표현하자면 뼈가 있다고 할까.. 그만큼 내용에 대한 설명이 자세하면서 쉽게 설명되어 있기에 복습하려는 사람에게도 참고할 부분이 많다. 더불어 책의 역자분께서 해당 강의에 대한 해설을 따로 찍어서 같이 공유를 해준 부분은 처음 접하는 사람에게는 좋은 길라잡이가 될 만하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 생각했을 때 이 책의 효과는 MIT에서 제공하는 강의와 함께 봤을 때 극대화된다고 생각한다. 그만큼 강의의 퀄리티나 강의에서 제공되는 과제의 내용 자체가 어떤 주제를 잘 이해할 수 있게끔 도와주는 보조수단으로써 좋았다. 물론 영어 강의라서 접근이 어려운 부분이 있겠지만, 그래도 좋은 한글 번역책이 나온만큼 꼭 강의도 같이 보면서 내용을 배울 수 있기를 추천한다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>Introduction to Computation and Programming using python</category>
      <category>mit</category>
      <category>코딩 뇌를 깨우는 파이썬</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1115</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Introduction-to-Computation-and-Programming-Using-Python#entry1115comment</comments>
      <pubDate>Sun, 24 Sep 2023 23:56:11 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 챗GPT 개발자 핸드북</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-chatGPT-developer-guide</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot;&gt;(해당 포스트에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot;&gt;소개하고 있는 &quot;&lt;a href=&quot;https://www.decoding.co.kr/product/%ec%b1%97gpt-%ea%b0%9c%eb%b0%9c%ec%9e%90-%ed%95%b8%eb%93%9c%eb%b6%81/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;챗GPT 개발자 핸드북&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot;&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1693141780310&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;챗GPT 개발자 핸드북&quot; data-og-description=&quot;개발자 &amp;times; 챗GPT, 환상의 콜라보 챗GPT를 내 업무의 보조 수단으로 똑똑하게 활용하기 이 책은 챗GPT가 어떻게 개발 도우미가 될 수 있는지 현실감 있게 보여 드립니다. 이력서 엔지니어링이나 코딩&quot; data-og-host=&quot;www.decoding.co.kr&quot; data-og-source-url=&quot;https://www.decoding.co.kr/product/%ec%b1%97gpt-%ea%b0%9c%eb%b0%9c%ec%9e%90-%ed%95%b8%eb%93%9c%eb%b6%81/&quot; data-og-url=&quot;https://www.decoding.co.kr/product/%ec%b1%97gpt-%ea%b0%9c%eb%b0%9c%ec%9e%90-%ed%95%b8%eb%93%9c%eb%b6%81/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c50QXv/hyTIHGgqsl/liwgKJ5Oj2FGDs25rnywD1/img.jpg?width=797&amp;amp;height=1024&amp;amp;face=0_0_797_1024,https://scrap.kakaocdn.net/dn/gMhkZ/hyTIRozTmb/fYMrD20WD8Zi5odfG1swa0/img.jpg?width=797&amp;amp;height=1024&amp;amp;face=0_0_797_1024,https://scrap.kakaocdn.net/dn/gS9Fg/hyTID4VTmA/mtLSVfWcIrzSZndVKVC0o1/img.jpg?width=578&amp;amp;height=2560&amp;amp;face=412_728_504_828&quot;&gt;&lt;a href=&quot;https://www.decoding.co.kr/product/%ec%b1%97gpt-%ea%b0%9c%eb%b0%9c%ec%9e%90-%ed%95%b8%eb%93%9c%eb%b6%81/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.decoding.co.kr/product/%ec%b1%97gpt-%ea%b0%9c%eb%b0%9c%ec%9e%90-%ed%95%b8%eb%93%9c%eb%b6%81/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c50QXv/hyTIHGgqsl/liwgKJ5Oj2FGDs25rnywD1/img.jpg?width=797&amp;amp;height=1024&amp;amp;face=0_0_797_1024,https://scrap.kakaocdn.net/dn/gMhkZ/hyTIRozTmb/fYMrD20WD8Zi5odfG1swa0/img.jpg?width=797&amp;amp;height=1024&amp;amp;face=0_0_797_1024,https://scrap.kakaocdn.net/dn/gS9Fg/hyTID4VTmA/mtLSVfWcIrzSZndVKVC0o1/img.jpg?width=578&amp;amp;height=2560&amp;amp;face=412_728_504_828');&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;챗GPT 개발자 핸드북&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;개발자 &amp;times; 챗GPT, 환상의 콜라보 챗GPT를 내 업무의 보조 수단으로 똑똑하게 활용하기 이 책은 챗GPT가 어떻게 개발 도우미가 될 수 있는지 현실감 있게 보여 드립니다. 이력서 엔지니어링이나 코딩&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.decoding.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작년말에 등장한 챗GPT는 기술업계뿐만 아니라 이와 관련없을것처럼 여겨지던 업계에까지 이슈를 불러오면서 현재까지 영향력을 미치고 있다. (아마 대부분의 회사들이 그러겠지만...) 우리회사도 챗GPT의 등장 이후로 어떻게 하면 챗GPT같은 LLM을 제품군에 반영할 수 있을지를 고민하고 계속 시도하는 것 같다. 챗GPT만큼 기술의 등장으로 인해서 이렇게 이슈화가 된 것도 잘 못 본것 같다. 굳이 기술업계 뿐만 아니더라도 다른 분야에 끼치는 영향은 챗GPT관련된 출판된 도서의 경향만 보더라도 알 수 있다. 아마 온라인 서점에서 챗GPT 관련 서적을 찾아보면, 챗GPT에 적용된 기술 자체를 설명하는 책보다는 챗GPT를 활용해서 블로그 포스트를 자동으로 만든다던가, 아니면 자기소개서를 써준다던가 하는 응용서들이 많이 출간되어 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2023-08-27 222952.png&quot; data-origin-width=&quot;1722&quot; data-origin-height=&quot;1409&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWBlRX/btssqmU67jj/Lx11KvcvKgpS38cDlwdGfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWBlRX/btssqmU67jj/Lx11KvcvKgpS38cDlwdGfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWBlRX/btssqmU67jj/Lx11KvcvKgpS38cDlwdGfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWBlRX%2FbtssqmU67jj%2FLx11KvcvKgpS38cDlwdGfK%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;1722&quot; height=&quot;1409&quot; data-filename=&quot;화면 캡처 2023-08-27 222952.png&quot; data-origin-width=&quot;1722&quot; data-origin-height=&quot;1409&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 챗GPT가 나온 초창기에는 관심이 없다가도, 몇달전부터 Plus 요금제를 구독해서 사용하고 있다. 이에 대한 이점은 ... 개인적으로는 참 어마어마하다고 생각한다. 평소 어떤 기술에 대해서 찾아보다가도 내가 모르는 것에 대해서 답변을 찾기 어려울때 챗GPT는 내가 모르는 내용을 잘 알려줬다. 특히 얼마전에 어떤 분이 챗GPT를 활용해서 논문 탐색하는 법에 대해서 소개한 이후로 나도 준비중인 논문 검색이나 기술 트랜드를 확인하는데 사용하고 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러다가 이를 조금더 효율적으로, 그리고 잘 쓰는 법에 대해서 알아두면 좋을것 같아 관련 책을 제공받아 읽게 되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230827_215539.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;9248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/basrfh/btssc8klARy/29SA7qvciA8Kk785SIPZ0k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/basrfh/btssc8klARy/29SA7qvciA8Kk785SIPZ0k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/basrfh/btssc8klARy/29SA7qvciA8Kk785SIPZ0k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbasrfh%2Fbtssc8klARy%2F29SA7qvciA8Kk785SIPZ0k%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;6936&quot; height=&quot;9248&quot; data-filename=&quot;20230827_215539.jpg&quot; data-origin-width=&quot;6936&quot; data-origin-height=&quot;9248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;책의 소개에도 언급되어 있는 책이지만 이 책은 챗GPT의 원리 (혹은 LLM)의 구조나 동작방식, 알고리즘에 대해서 소개하는 책이 아니다. 어떻게 보면 앞에서 잠깐 소개한 것처럼 챗GPT를 활용해서 할수 있는 작업에 대해서 소개한 응용서적이라고 할 수 있다. 그래서 책의 분량이 그렇게 많지 않다. (250여페이지) 다만 전혀 이 분야에 대해서 모르는 사람이 아니라 어느정도 개발지식이 있는 상태에서 읽기 좋은 책이라고 할 수 있겠다. 그리고 나름 최근에 출간된 책이기에 최근에 추가된 기능 (플러그인이나 코드 인터프리터) 등에 대한 내용도 담겨져 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무엇보다도 딱 챗GPT에 대한 내용만 담겨져 있는게 아니라 copilot이나 langchain을 활용한 방법도 소개되어 있는 부분도 좋았다. 아무래도 저자분이 관련부서에서 활동중인 개발자다보니 딱 개발자가 읽기에 좋은 주제와 예시를 소개하는 것으로 이뤄져 있어서 읽기 좋았다. 물론 다른 관점에서 보자면 개발 지식이 없는 상태에서 보면 책에서 언급되어 있는 내용들이 무슨 내용인가 싶을 수 있다. 책제목에 나와있는 그대로 이 책은 개발자 핸드북이기 때문에 주 독자 대상이 챗GPT를 활용해서 뭔가를 해보려는 개발자이고, 관련 내용을 다루는 사람들에게는 좋은 책이 될거라 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 책을 고르는데 있어서 고려해볼만 사항은 존재한다. OpenAI에서 서비스하는 챗GPT는 현재도 계속 발전이 이뤄지고 있고, 이에 따라서 제공되는 서비스가 시시각각 변하고 있다. 이 책이 써질때쯤 제공되던 기능 중 하나였던 온라인 검색기능도 privacy 문제 등의 이유로 기능이 제거되었고, 과거에는 무료로 제공되던 플러그인도 점점 유료화가 이뤄지는 추세다. 이렇게 기능이 계속 변화하는 시점에서 핸드북 내용만으로 챗GPT 내용을 커버하기에는 분량이 조금 부족한건 아닐까 하는게 개인적인 생각이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;물론 이런것만 고려한다면 이 책은 챗GPT를 전혀 모르던 개발자가 활용하는 실마리를 구하는 관점에서는 충분히 선택될만한 책이다. 더불어 현재 MS에서 관련 업무를 하던 저자가 쓴 책이기에 아무래도 책에서 다뤄진 내용이 이런 부분을 충분히 만족시킬수 있는 책이 아닐까 생각한다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>ChatGPT</category>
      <category>Copilot</category>
      <category>개발자</category>
      <category>챗GPT</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1114</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-chatGPT-developer-guide#entry1114comment</comments>
      <pubDate>Sun, 27 Aug 2023 23:11:01 +0900</pubDate>
    </item>
    <item>
      <title>[Book] MLOps 실전 가이드</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Practical-MLOps</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9385341956&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MLOps 실전 가이드&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.) &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1690118496857&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;MLOps 실전 가이드&quot; data-og-description=&quot;머신러닝 모델의 안정적인 운영과 성공적인 CI/CD를 위한 MLOps 엔지니어링 노하우&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9385341956&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9385341956&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bctdHQ/hyTpa2tGPa/DJoXPMTBIqrtIq3VrH31F1/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/fjgcv/hyTpauEBrF/nykS0lhC0LABWvlOaB9Tjk/img.png?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/SZK6b/hyTo51cnXd/rKFs0iI0BXRRAKAvc9G2Hk/img.jpg?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9385341956&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9385341956&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bctdHQ/hyTpa2tGPa/DJoXPMTBIqrtIq3VrH31F1/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/fjgcv/hyTpauEBrF/nykS0lhC0LABWvlOaB9Tjk/img.png?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/SZK6b/hyTo51cnXd/rKFs0iI0BXRRAKAvc9G2Hk/img.jpg?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&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;MLOps 실전 가이드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;머신러닝 모델의 안정적인 운영과 성공적인 CI/CD를 위한 MLOps 엔지니어링 노하우&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근들어서 관심있게 살펴보는 주제가 여러개 있는데, 그 중 하나가 MLOps이다. 개인적인 생각으로는 MLOps는 뭔가 AI의 이론적인 내용과 관련이 있다기보다는 조금 시스템적으로 이를 어떻게 처리하냐에 대한 내용을 주로 다루는 듯 하다. 사실 개인적으로 관심을 가지게 된 이유는 아무래도 내가 만든 모델을 실제 환경에 적용하는데 있어서 고려해야 될 부분이 한 두개가 아니라는 것을 느끼고 있기 때문이다. 단순히 책이나 어디에 나와있는 예제처럼 단순히 1회성에만 그치는 것이 아니라 실제 모델을 적용하려면, 지속적으로 모델을 학습하면서 성능 개선도 해야 되고, 내가 만든 모델을 언제 어떻게 배포해야 되는지에 대해서고 고민을 해야 된다. 아무리 리소스가 충분하고, 뛰어난 알고리즘이 있다고 하더라도, 뭔가 체계적인 프로세스가 정립되어 있지 않는다면 모델을 실제 환경에 적용한다는 것은 거의 불가능한 일이다.&amp;nbsp;다행히 최근 거의 대부분의 클라우드 업체나 MLOps를 지원해주는 툴들이 많이 나와있고, 계속해서 발전해나가고 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230723_215832.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l8y8m/btsoxGrzFO4/Mua6IsNGUw9sQK67wxtknK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l8y8m/btsoxGrzFO4/Mua6IsNGUw9sQK67wxtknK/img.jpg&quot; data-alt=&quot;MLOps 실전 가이드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l8y8m/btsoxGrzFO4/Mua6IsNGUw9sQK67wxtknK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl8y8m%2FbtsoxGrzFO4%2FMua6IsNGUw9sQK67wxtknK%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20230723_215832.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MLOps 실전 가이드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 살펴볼 책은 여타 MLOps의 기초나 간단한 소개를 넘어서 뭔가 실용적인 측면에서 접근한 책이다. 책의 제목에서도 알 수 있다시피 다양한 MLOps 시스템과 활용 사례에 대해서 다루고 있다. 심지어는 엣지 컴퓨팅과 엮어서 MLOps를 응용한 사례도 제공하고 있다. 그래서 일반적인 docker를 사용한 파이프라인 구축을 넘어서 뭔가 서비스로 적용된 MLOps 사례를 살펴보고 싶은 사람에게는 좋은 길잡이가 될 수 있다. 개인적으로는 중간중간에 역자 노트가 담겨져 있어서 누군가 가져볼만한 궁금증에 대해서 역자가 나름 정리한 내용을 담아놓은게 이 책의 좋은 부분이라고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데.. 책의 내용이 뭐랄까 좀 너무 중구난방식으로 흩어져있다는 생각도 들었다. 물론 다양한 사례를 담는 의도에서 책속에 AWS, Azure, GCP에 대한 사례와 실습을 담긴 했는데, 아마 실제로 써본 사람은 알겠지만 각 사에서 제공하는 서비스는 사용자 편의성을 제공하는 측면에서 전체 프로세스가 간략화되어 있고, 실제로 써본다고 해서 MLOps를 느낄 수 있는 것도 아니다. 결국 자기가 익숙한 시스템이 아닌 이상 해당 책 부분은 그냥 넘어가게 될텐데, 그러게 되면 생각보다 책에서 얻게 되는 내용이 적어지게 된다. (특히 AutoML관련된 챕터에서는 진짜 GCP에만 해당되는 내용이고, MLOps랑 관련없는 얘기들이 많이 포함된거 같다.) 그리고 아무래도 책이 2020년에 써졌다보니 몇몇 부분이 outdate된 부분이 있을거 같은데, 일부 책의 도식이나 예제 화면을 보면 20년 화면 그대로 들어있는게 있어서 해당 부분은 역자분들이 조금 관심있게 봤으면 좋지 않았을까 하는 아쉬움이 살짝 있다. (물론 일부 부분은 개인 환경에서 돌리고 올린 부분도 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다양한 MLOps의 사례를 담고 이를 실용적으로 접근하고자 한 책의 의도는 정말 잘 담겨져 있다고 생각한다. 하지만 개인적인 생각을 하나 달자면 너무 서비스별로 나눠서 설명하고, 결국 한 서비스에 익숙한 독자라면 넘기는 내용이 많기도 하고, 개인적으로 MLOps 쪽에서 알고 싶은 부분 중 하나인 Model Versioning이나 Lineage Managing 관련 내용은 살펴볼 수가 없어서 좀 기대에서 벗어난 책이었던 것 같다. 내가 너무 원하는 것만 생각하고 책은 읽은 것일지도...&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>MLOps</category>
      <category>MLOps 실전 가이드</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1113</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Practical-MLOps#entry1113comment</comments>
      <pubDate>Sun, 23 Jul 2023 23:50:02 +0900</pubDate>
    </item>
    <item>
      <title>Epistemic uncertainty, Aleatoric uncertainty</title>
      <link>https://talkingaboutme.tistory.com/entry/Epistemic-uncertainty-Aleatoric-uncertainty</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Epistemic Uncertainty는 현재 가지고 있는 지식의 한계로 인해서 발생하는 불확실성을 나타낸다. (시스템이나 모델이 원론적으로 가지는 불확실성이 아니라...) 예를 들어서 어떤 모델이나 시스템을 이해하는데 있어서 정보가 부족하거나 불완전해서 해당 시스템을 설명하기 어렵지만, 추후에라도 어떤 조건이 만족한다면 충분히 설명할 수 있는 가능성이 존재하는 경우가 이런 경우다. 결국 시간이 지나가고, 정보가 더 많이 제공되면 해결될 수 있는 불확실성을 나타낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Aleatoric Uncertainty는 반대로 시스템이나 모델이 원론적으로 불확실성을 나타낸다. 예를 들어서 동전던지기나 주사위던지기는 아무리 동전과 주사위를 잘 모사한다고 해도, 어떤 사건에 대한 결과를 예측하기가 어려운 형태이다. 이 경우 주어진 정보가 충분하더라도 결과를 예측할 수 없으며, Epistemic Uncertainty처럼 시간이 지나거나 정보량이 쌓여도 해결되지 않는 불확실성을 나타낸다.&lt;/p&gt;</description>
      <category>Study</category>
      <category>uncertainty</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1112</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Epistemic-uncertainty-Aleatoric-uncertainty#entry1112comment</comments>
      <pubDate>Wed, 19 Jul 2023 00:30:32 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 행동 데이터 분석</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Behavioral-Data-Analysis-with-R-and-Python</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://www.hanbit.co.kr/media/books/book_view.html?p_code=B6599316365&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;행동 데이터 분석&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1687658221404&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;행동 데이터 분석&quot; data-og-description=&quot;&amp;lsquo;정말 고객이 우리 광고 메일을 보고 서비스를 구독할까?&amp;rsquo; &amp;lsquo;연령이 높은 고객이 구매하는 상품은 따로 있을까?&amp;rsquo; &amp;lsquo;무엇이 고객의 행동을 유발하는지&amp;rsquo;에 대한 답을 주는 책!&quot; data-og-host=&quot;www.hanbit.co.kr&quot; data-og-source-url=&quot;https://www.hanbit.co.kr/media/books/book_view.html?p_code=B6599316365&quot; data-og-url=&quot;https://www.hanbit.co.kr/media/books/book_view.html?p_code=B6599316365&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xhdM1/hyS5BNDZ5v/YyM22dIvKToQeWzKKtvnO0/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/cBo1cS/hyS5ABccXb/HMtf3CUWeUAbPATnJpBHYk/img.jpg?width=700&amp;amp;height=9694&amp;amp;face=0_0_700_9694,https://scrap.kakaocdn.net/dn/OUP0l/hyS5Bmz9RR/JGwkSqlVJBhFadSl0adlRk/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200&quot;&gt;&lt;a href=&quot;https://www.hanbit.co.kr/media/books/book_view.html?p_code=B6599316365&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.hanbit.co.kr/media/books/book_view.html?p_code=B6599316365&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xhdM1/hyS5BNDZ5v/YyM22dIvKToQeWzKKtvnO0/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/cBo1cS/hyS5ABccXb/HMtf3CUWeUAbPATnJpBHYk/img.jpg?width=700&amp;amp;height=9694&amp;amp;face=0_0_700_9694,https://scrap.kakaocdn.net/dn/OUP0l/hyS5Bmz9RR/JGwkSqlVJBhFadSl0adlRk/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200');&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;lsquo;정말 고객이 우리 광고 메일을 보고 서비스를 구독할까?&amp;rsquo; &amp;lsquo;연령이 높은 고객이 구매하는 상품은 따로 있을까?&amp;rsquo; &amp;lsquo;무엇이 고객의 행동을 유발하는지&amp;rsquo;에 대한 답을 주는 책!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.hanbit.co.kr&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;이렇게 쌓은 데이터에서 어떤 경향성이나 패턴을 찾고자 하는 것이 요즘의 데이터 과학의 트랜드가 된것 같다. 과거에는 그냥 흘러넘어갔던 데이터들도 이제는 어떤 특정 개인을 단정짓지는 못하더라도, 그 사람이 속한 연령대, 그룹의 경향성 정도는 유추할 수 있게 되었기 때문이다. 그냥 단순하게 생각했을때 이런 분야가 적용된 것이 &quot;마이데이터&quot; 인 듯 하다. 아마 경험한 사람들은 알겠지만, 시중의 금융사들은 다양한 이벤트들을 통해서 고객들의 금융데이터에 대한 접근권한을 얻으려고 노력했다. 별개 아닐수도 있겠지만, 만약 금융사들이 고객들이 돈을 쓰는 유형이나 어디에서 돈이 제일 많이 빠지고, 대출을 많이 하는지를 알 수 있다면, 그에 맞는 상품을 추천해줄수도 있는 것이다. (나도 대출받은 곳이 하나있는데, 이상하게 대출 상환일이 다가오면 다가올수록 저리의 대출로 이관할 수 있다고 홍보하는게 잦아지는 거보면 이런거랑 연관이 있지 않을까 싶다...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 이렇게 데이터를 통해서 사람의 경향성을 분석하는 분야를 행동분석학 (Behavioral Analysis)라고 표현하는 듯하다. 물론 최근에 많이 사용하는 딥러닝 기법을 활용해서 어떤 행동을 예측하는 것으로 확장할수도 있겠지만, 개인적으로 생각했을 때 이 분야의 목적은 뭔가에 대한 예측보다는 어떤 행동을 했을 때 그 행동이 발생하게 된 요인이나 근거를 찾는데 조금더 초점을 맞추고 있는 것을 보인다. 물론 딥러닝의 설명적인 측면이 부족하기에 어떤 현상에 대한 설명을 위해서 그런 부분이 중점적이지 않을까 하는 생각까지 해본다. 그래서 이번에 다루는 책도 역시 그런 딥러닝 기법이 아닌 전형적인 데이터 분석과 통계적 기법을 통해서 사람의 행동 데이터를 통한 분석에 대해서 설명하고 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230624_232726.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4Sjbp/btslatBZn9L/3w5NB6WEZHG7DUt6ebpXg0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4Sjbp/btslatBZn9L/3w5NB6WEZHG7DUt6ebpXg0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4Sjbp/btslatBZn9L/3w5NB6WEZHG7DUt6ebpXg0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4Sjbp%2FbtslatBZn9L%2F3w5NB6WEZHG7DUt6ebpXg0%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;2268&quot; height=&quot;4032&quot; data-filename=&quot;20230624_232726.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞에서 소개한 것과 같이 이 책은 확률 통계 기법을 통해서 고객 데이터를 다루는 방법에 대해서 R과 Python으로 소개한 책이다. 그래서 딥러닝에 대한 내용도 거의 없고, 다만 통계 관련 내용을 활용해서 내용이 전개되기 때문에 관련 지식에 대해서 조금 알고 있으면 내용 이행에 도움이 될 듯 하다. 그래도 관련 연구자들이 이 책을 통해서 도움을 받을 수 있는 부분은 행동 데이터라는 것 자체가 다양한 특성을 가지고 있어서 실제 모델을 적용하기 위한 전처리나 결측치 처리가 필요한 부분이고, 이는 굳이 행동 데이터가 아니더라도 다른 데이터를 다룰 때에도 유용하게 사용할 수 있는 부분이 있어서 참고할 만하다고 생각하다. 또한 개인적으로 이 책의 백미는 4장인 실험 설계와 분석 부분인데, 개인적으로도 어떤 이론에 대한 실험을 하는데 있어서 가장 어려움을 느끼는 부분이 바로 실험 설계와 결과에 대한 분석 쪽인데, 이 챕터에서는 3장을 통해서 예시를 통한 실험 설계와 진행, 분석에 대한 내용을 다루고 있다. 뭔가 어떤 실험에 대해서 설계를 고민하고 있다면, 해당 챕터에서 다루는 내용이 도움이 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금 아쉬운 부분이라면 (물론 이는 번역서 문제가 아닌 원서의 전개 방식에 대한 것이긴 하지만..) 이 책의 구현이 R과 Python으로 되어 있다보니, 예시도 두가지 모두 제시되어 있고, 어떻게 보며 이 때문에 분량이 조금 늘어진 부분도 있는 것 같다. 만약 하나의 언어만 아는 사람이라면 조금 생소할 수 있는 부분이다. 오히려 책에는 Pseudo code 정도로만 소개하고, 예시를 Jupyter notebook 같은 것으로 제시했어도 좋지 않았을까 하는 생각이 든다. 또한 책에는 보면 설명을 뒷바침할 수 있는 다양한 그래프들이 제시되어있는데, 오히려 예시코드에 이런 그래프를 출력할 수 있는 코드도 같이 있었으면 좋지 않을까 싶다. (오히려 두가지 언어로 표기가 되면서 늘어난 분량이 시각화 관련 내용으로 소개되었으면 좋았을것 같다는게 개인적인 생각이다..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 아쉬운 점을 소개하긴 했지만, 앞에서 소개한 것처럼 행동 데이터라는 것 자체가 다양한 특성을 지니고 있고, 그만큼 전처리나 분석하는 기법이 조금 어려운 데이터인데, 이 책은 그런 데이터를 이론과 실제 구현 코드를 통해서 쉽게 분석하는 방법에 대해서 소개했다는 측면에서 여타 다른 데이터 분석책보다는 다른 특징을 가지고 있다고 생각한다. 또한 책에 담겨져 있는 내용 자체가 실제 응용될 수 있는 분야가 굉장히 넓기 때문에 관련 연구를 하는 사람들에게는 좋은 지침서가 되지 않을까 개인적으로 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(책을 고르게 된 개인적인 여담을 소개하자면 사실 책의 내용이 행동과 관계되어 있어서, 내가 관심있는 주제 중 하나인 Behavior Cloning이랑 관련이 있을까 싶었는데.. 전혀 관계가 없다.)&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>Behavioral Data Analysis</category>
      <category>Python</category>
      <category>R</category>
      <category>한빛미디어</category>
      <category>행동 데이터 분석</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1111</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Behavioral-Data-Analysis-with-R-and-Python#entry1111comment</comments>
      <pubDate>Sun, 25 Jun 2023 11:41:00 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 파이썬 라이브러리를 활용한 데이터 분석</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-python-for-data-analysis</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2604168887&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;파이썬 라이브러리를 활용한 데이터 분석&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot;&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685284890394&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;파이썬 라이브러리를 활용한 데이터 분석(3판)&quot; data-og-description=&quot;데이터 분석을 배우는 가장 완벽한 방법 파이썬 라이브러리 사용법부터 실제 데이터를 활용한 실습까지&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2604168887&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2604168887&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bI20l2/hySLAg6UjK/URUpiT9IghnMSoewJhlBA1/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/bwRxAo/hySLHAyBx8/Ua4BDYlEdzBXfYkTMb0F9k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/pYlbD/hySNeXPAsP/25ZKu6oxsqwSOeLn4Gf7gK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2604168887&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2604168887&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bI20l2/hySLAg6UjK/URUpiT9IghnMSoewJhlBA1/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/bwRxAo/hySLHAyBx8/Ua4BDYlEdzBXfYkTMb0F9k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/pYlbD/hySNeXPAsP/25ZKu6oxsqwSOeLn4Gf7gK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_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;파이썬 라이브러리를 활용한 데이터 분석(3판)&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;hanbit.co.kr&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230528_232819.jpg&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;1297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfFK8S/btshCcQseN5/ma9Esd6uVHl3yzuGf5xNC1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfFK8S/btshCcQseN5/ma9Esd6uVHl3yzuGf5xNC1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfFK8S/btshCcQseN5/ma9Esd6uVHl3yzuGf5xNC1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfFK8S%2FbtshCcQseN5%2Fma9Esd6uVHl3yzuGf5xNC1%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;1079&quot; height=&quot;1297&quot; data-filename=&quot;20230528_232819.jpg&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;1297&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10년전에 파이썬으로 데이터 분석을 해야 되겠다 싶어서 처음 봤던 책이 이 책이었다. (생각해보니까 그때 썼던 &lt;a href=&quot;https://talkingaboutme.tistory.com/entry/Book-Data-Analyst%EB%A5%BC-%EC%9C%84%ED%95%9C-Python-for-Data-Analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;리뷰&lt;/a&gt;도 남아있다.) 그냥 책 제목도 직관적이어서 &quot;이걸로 파이썬을 배우면서 데이터 분석도 할 수 있겠지...&quot; 책 내용도 보지도 않고 그냥 샀던 책이었는데, 이 책이 어느덧 나온지 10년이 되었다. 책을 통해서 배울 수 있었던 것은 데이터 분석의 간단한 지름길을 알려준다는 점이었다. 책의 저자인 웨스 맥키니가 직접 개발한 pandas를 활용해서 이것저것 다양한 데이터 소스를 가지고 시각화도 하면서 통계적 지표도 보여준다는 점이 당시에는 너무 신기했고, 예제를 가지고 한참 살펴봤던 기억이 난다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230528_232727.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;1972&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ApTLz/btshBjPKDHx/7dHkzLdiF5Ke7t8cMyKwwK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ApTLz/btshBjPKDHx/7dHkzLdiF5Ke7t8cMyKwwK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ApTLz/btshBjPKDHx/7dHkzLdiF5Ke7t8cMyKwwK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FApTLz%2FbtshBjPKDHx%2F7dHkzLdiF5Ke7t8cMyKwwK%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;2268&quot; height=&quot;1972&quot; data-filename=&quot;20230528_232727.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;1972&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 책이 이제는 3판으로 출간되어 나왔다. 동일한 주제이지만 책표지나 안에 들어있는 내용들이 개정되어서 나왔다. 처음 나왔을 때는 enthought canopy라는 ipython 기반 툴로 실습했었는데, 이제는 jupyter로 변경되었고 (관련 예제코드도 모두 jupyter notebook으로 제공하는 것 같다.) 안에 들어있는 패키지나 함수 활용법도 최신 패키지에 맞게 개정되어서 나왔다. 아무래도 내용이 개정되면서 추가된 내용이 많아지면서 지면수나 책 금액대도 조금 올라간 부분이 있긴 하지만 책이 담고 있는 내용에 비하면 아주 간소하게 느껴질 정도다. 사실 책의 내용에 대해서 아주 간단하게 언급하긴 했지만, 이 책의 가치는 10년이 지난 지금에서 더 중요성이 있다는 생각이 든다. 당시 책이 나오는 시점에서는 파이썬이나 pandas가 나오는 초창기 시점이기도 하고, 지금처럼 데이터 분석에 대한 중요성이 그렇게 부각되지 않았었다. 오히려 인공지능이 크게 발달하면서 데이터 분석 영역도 점점 넗어지면서 이 책도 역시 많은 사람들에게 활용될 여지가 그때보다는 많이 커지지 않았을까 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 이전에 소개한 pandas in action 책과 비교했을 때, 해당 책은 예제 중심의 pandas 활용법에 대해서 내용 전개가 되었다면, 이 책은 pandas를 가지고 처음부터 끝까지 할 수 있는 내용, 예를 들어서 데이터를 로딩하는 것부터 해서 데이터 분석하고 조작하는 방법에 대해서 잘 소개되어 있다. 또 마지막에는 실제 데이터분석 예제를 통해서 다양한 정보와 시각화 결과를 보여주면서 활용 방법에 대해서 전달하고 있다. 개인적으로도 책을 통해서 많이 배운 부분이기도 하고, 그런 부분을 개정판에서 다른 느낌으로 읽으면서 새롭기도 하다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>python for data analysis</category>
      <category>파이썬 라이브러리를 활용한 데이터분석</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1110</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-python-for-data-analysis#entry1110comment</comments>
      <pubDate>Mon, 29 May 2023 00:17:24 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 개발자를 위한 머신러닝/딥러닝</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-AI-and-Machine-Learning-For-Coder</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9073454247&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;개발자를 위한 머신러닝&amp;amp;딥러닝&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot;&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682347843788&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;개발자를 위한 머신러닝&amp;amp;딥러닝&quot; data-og-description=&quot;수학이 어려운 개발자를 위한 코드 실습형 머신러닝 가이드북. 머신러닝 모델 구축부터 활용법까지 단계별로 설명하며 개발자가 마주하게 될 다양한 문제를 머신러닝으로 해결하는 법을 안내&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9073454247&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9073454247&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bhiGhq/hySoC6fc2U/9fg68g2IgZbG7TAo22bV50/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/cEzxwc/hySozIp8R4/kUJGt3rim5AkRDaiUBxV41/img.jpg?width=700&amp;amp;height=3723&amp;amp;face=0_0_700_3723,https://scrap.kakaocdn.net/dn/cJ4Grg/hySovMNVDP/EI1mUsSVLKcmBoCCKFjvFk/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9073454247&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9073454247&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bhiGhq/hySoC6fc2U/9fg68g2IgZbG7TAo22bV50/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/cEzxwc/hySozIp8R4/kUJGt3rim5AkRDaiUBxV41/img.jpg?width=700&amp;amp;height=3723&amp;amp;face=0_0_700_3723,https://scrap.kakaocdn.net/dn/cJ4Grg/hySovMNVDP/EI1mUsSVLKcmBoCCKFjvFk/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200');&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;개발자를 위한 머신러닝&amp;amp;딥러닝&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;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 몇년동안 베타리딩이나 리뷰활동을 하면서 되도록이면 인공지능 관련 서적 (혹은 파이썬 개발서적)을 선택해서 읽는 편이다. 물론 현업에서 활용하기도 할 뿐더러, 과연 딥러닝/머신러닝 관련 서적들이 출간되면서 어떤 내용들을 다루는지 궁금해서다. 물론 왠만한 개발 내용은 인터넷을 검색해서도 찾을수도 있고, 때로는 논문을 찾아봐야만 나오는 내용들도 있지만, 이렇게 책을 통해서 살펴보는 내용은 뭔가 정리가 되어있고, 순서에 맞게 읽을 수 있다는 점? 혹은 난이도에 따라서 천천히 읽어볼 수 있다는 점이 장점이 아닐까 싶다. (물론 정적인 요소이기에 어느정도 시간이 지나면 outdated되는 부분이 존재하긴 하지만 말이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 사실 이런 인공지능 서적을 읽으면서도 한가지 고민이 되는 점이 한가지 생긴다. 과연 이런 인공지능 관련 서적을 전공지식? 혹은 배경지식을 이해하지 않고도 과연 접근할 수 있는가에 대한 부분이다. 분명 비개발자나 비전공자가 처음 인공지능을 접근하는데 있어서는 소위 말하는 핸즈온 방식의 내용 전개가 참 도움이 된다. 그냥 뭔지는 몰라도 예제를 직접 따라해보면서 거기서 발생하는 궁금증을 스스로 해결할 수 있게끔 도와주는 책은 시중에도 많이 나와있고, 아마 대부분의 서적이 거진 이런 방식으로 따라간다. 나도 처음 접근하는 입장에서는 이렇게 접근하다가도 문득, 단순히 이렇게 코드만 보고 따라하는 것만으로도 과연 성능을 올리고, 확장시킬 수 있는가에 대한 걱정이 들기 시작했다. 아무리 봐도 인공지능 기술을 공부하는데 있어서는 아무래도 수학적인 부분을 알아야만 넘어갈 수 있는 부분이 있는 것이고, 최근은 강의나 책들을 그런 관점에서 보고있긴 하다. 그래도 개발자로써는 이런 수학적인 지식과 더불어 뭔가 개발적인 부분(예를 들어서 API 사용법이나 데이터 구조같은 부분)도 필요하고.. 어느정도 균형이 필요한 것 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230424_234738.jpg&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;1280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BUrSs/btscCBGHU0s/eVTD67TKca4Xm3WJkwafq0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BUrSs/btscCBGHU0s/eVTD67TKca4Xm3WJkwafq0/img.jpg&quot; data-alt=&quot;개발자를 위한 머신러닝&amp;amp;amp;딥러닝&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BUrSs/btscCBGHU0s/eVTD67TKca4Xm3WJkwafq0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBUrSs%2FbtscCBGHU0s%2FeVTD67TKca4Xm3WJkwafq0%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;1065&quot; height=&quot;1280&quot; data-filename=&quot;20230424_234738.jpg&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;1280&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;개발자를 위한 머신러닝&amp;amp;딥러닝&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책은 이름도 &quot;개발자를 위한&quot; (원서에는 For Coder라고 표현되어 있다.) 머신러닝/딥러닝이라는 타이틀을 가지고 있다. 그래서 이책에는 앞에서 언급한 것처럼 뭔가 원론적인 수학 지식이나 인공지능 관련 배경지식을 포함하지 않고 딱 담백하게 Tensorflow/Keras를 활용한 인공지능 기술 활용 방법에 대해서 기술하고 있다. 사실 개인적인 입장에서는 이런 류의 책을 좋아하지는 않지만, 뭔가 어떤 결과물이나 현재 하고 있는 작업에 관련 기술을 적용하기 위한 예시를 찾고 있다면 이 책은 그런 부분에서 부족한 것을 채워줄 수 있다. 이 책의 원저자인 로렌스 모로니도 사실 전공자가 아닌 입장(물리학 전공)에서 어떻게 하면 사람들이(특히 개발자가) 인공지능 기술을 잘 활용할 수 있을지에 대한 고민을 많이 하고 이 책을 작성했다고 하고, 책 내용도 살펴보면 그런 부분이 많이 강조되어 있다. 특히 뭔가 복잡하게 내용이 전개될 것 같은 부분이 있으면 해당 부분에 대한 원론적인 내용보다는 이와 관련 예시를 통해서 쉽게 설명하고자 했다. 일례로 컴퓨터 비전 관련된 설명에서도 복잡한 기술 설명보다도 API를 통해서 이해하기 쉽게 설명해놨다.또 후반부에는 임베디드나 폰 환경에서도 활용해볼 수 있는 Tensorflow Lite나 웹환경에서도 구현가능한 Tensorflow.js에 대한 설명이 포함되어 있어, 다양한 사례에 응용해보고자 하는 사람에게는 도움이 될 것이다.&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>Hobby/Book</category>
      <category>개발자를 위한 머신러닝&amp;amp;딥러닝</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1109</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-AI-and-Machine-Learning-For-Coder#entry1109comment</comments>
      <pubDate>Tue, 25 Apr 2023 00:22:23 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 러닝 타입스크립트</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Learning-typescript</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9711663545&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;러닝 타입스크립트&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1677392837004&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;러닝 타입스크립트&quot; data-og-description=&quot;타입스크립트 개념부터 활용, 고급 기능까지 한 권에 모두 담았다! 핵심을 짚는 개념 설명과 다양한 예제를 살펴보며 타입스크립트를 차근차근 배워본다.&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9711663545&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9711663545&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rla0B/hyRKLCPBDS/dAcrAyhCWG7eVle1LN0dj1/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/bnS9iI/hyRKO0CLpy/kLo8YuPfxHoe63j1uKS0Jk/img.jpg?width=700&amp;amp;height=3276&amp;amp;face=0_0_700_3276,https://scrap.kakaocdn.net/dn/bIUktN/hyRKYhRJUp/FYNrvsEqKEkt0yvnQWr9dk/img.png?width=903&amp;amp;height=823&amp;amp;face=0_0_903_823&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9711663545&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B9711663545&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rla0B/hyRKLCPBDS/dAcrAyhCWG7eVle1LN0dj1/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/bnS9iI/hyRKO0CLpy/kLo8YuPfxHoe63j1uKS0Jk/img.jpg?width=700&amp;amp;height=3276&amp;amp;face=0_0_700_3276,https://scrap.kakaocdn.net/dn/bIUktN/hyRKYhRJUp/FYNrvsEqKEkt0yvnQWr9dk/img.png?width=903&amp;amp;height=823&amp;amp;face=0_0_903_823');&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;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타입스크립트는 2012년 마이크로소프트에서 만든 웹 프론트앤드 개발용 언어이다. 물론 타입스크립트에 앞서 웹 개발을 위해 만들어진 언어가 자바스크립트인데, 여기에 정적타입체크 등의 기능으로 확장된 언어가 바로 타입스크립트이다. 거기에 기존의 자바스크립트에서는 런터임에서만 확인할 수 있던 오류를 코드 작성시부터 파악할 수 있어 디버깅이나 개발 효율성이 향상되는 효과도 같이 누릴 수 있는 언어이다. 그래서 이전에 개발되어 있던 내용을 타입스크립트로 전환해서 개발하는 추세가 지속되고 있다. 대표적으로 slack이나 airbnb, google같은 회사에서 typescript를 활용하면서 업무를 하는것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 새로운 언어를 배운다는 것 자체가 개발자 입장에서는 어려운 부분이 있다. 기존의 언어와 다른 문법이나 개발론, 디버깅 방법 등은 개발자들이 언어 전환에 대해서 쉽게 접근하지 못하는 측면이 있다. 물론 자바스크립트와 유사하고, 일부 문법은 공유한다고는 하나 마치 언어 하나를 새로 배우는게 쉽지 않은 일처럼, 프로그래밍언어를 새로 배우는 것 역시 쉽지 않은 일이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230226_225859.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uQT7H/btr0HziaVtX/6Xprp9cKeZSUWxZwpYoSS0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uQT7H/btr0HziaVtX/6Xprp9cKeZSUWxZwpYoSS0/img.jpg&quot; data-alt=&quot;러닝 타입스크립트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uQT7H/btr0HziaVtX/6Xprp9cKeZSUWxZwpYoSS0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuQT7H%2Fbtr0HziaVtX%2F6Xprp9cKeZSUWxZwpYoSS0%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;4032&quot; height=&quot;2268&quot; data-filename=&quot;20230226_225859.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&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;이 책은 오라일리에서 출간되는 Learning 시리즈 중 하나로, 기존의 책들처럼 해당 언어에 대해서 처음 접근하는 사람에게 필요한 타입스크립트의 문법부터 개발 방법까지를 한번 훑을 수 있는 입문서이다. 보통 언어를 처음 접하게 되면 언어 공식 사이트의 공식 가이드가 가장 좋은 학습 리소스이겠지만, 이 책도 역시 해당 내용들에 대해서 담겨있으면서 간단하게나마 예제를 통해서 살펴보고 있다. 책이 담고 있는 주제들은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자바스크립트에서 타입스크립트로의 변환&lt;/li&gt;
&lt;li&gt;타입스크립트에서의 타입 시스템&lt;/li&gt;
&lt;li&gt;객체 지향에 대한 내용&lt;/li&gt;
&lt;li&gt;타입스크립트의 문법&lt;/li&gt;
&lt;li&gt;사용 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 아예 서두에는 이 책을 활용하는 방법에 대해서 명시되어 있다.&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;나중에 실용적인 입문용 타입스크립트 참고서로 다시 살펴보기&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 앞에서 언급한 것처럼 이 책 자체를 선택했다는 것 자체가 타입스크립트에 대한 이해가 떨어진 독자가 이 책을 통해서 배우고자 함인데, 책에 나와있는 용어나 설명 등은 그래도 어느정도 자바스크립트나 다른 개발언어를 다뤄본 사람이라면 이해할 수 있을 법한 내용들로 되어 있다. 일단 나도 타입스크립트가 어떤 취지로 만들어졌는지만 이해하고 있는 상황이지 자바스크립트나 타입스크립트를 다뤄보지 않은 입장에서는 조금 어려운 내용들이 많이 있었다. 물론 단기간에 책을 읽고 평가하기가 어려운 부분이 있었지만, 이 책은 기존의 오라일리 Learning 관련 책에 비하면 약간 난이도가 있다고 느껴졌다. 그렇다고 책 자체내용이 이해하기 힘들거나 그런 것은 아니다. 원서 만큼이나 예제에 대한 설명이나 주제와 예제간의 관련되어 있는 내용이 담겨져 있어서 위의 2번항에서도 언급한것처럼 어떤 주제에 대해서 조금 더 깊게 파볼 생각이 있다면 이 책은 어느정도 보조재 역할을 해줄 수 있을 만큼 언어의 전반적인 설명이 들어 있다. 무엇보다도 원서에서 책 내용과 관련한&lt;a href=&quot;https://www.learningtypescript.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt; 사이트&lt;/a&gt;가 운영되고 있어서 직접 타입스크립트를 활용하면서 참고할 수 있게끔 리소스 측면에서는 좋은 내용들이 담긴 것 같다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>러닝 타입스크립트</category>
      <category>오라일리</category>
      <category>타입스크립트</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1108</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Learning-typescript#entry1108comment</comments>
      <pubDate>Sun, 26 Feb 2023 15:59:45 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 트랜스포머를 활용한 자연어 처리</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Natural-Language-Processing-with-Transformers</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2369016915&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;트랜스포머를 활용한 자연어 처리&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1672408887796&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;트랜스포머를 활용한 자연어 처리&quot; data-og-description=&quot;자연어 처리 분야에 있어 표준이 된 트랜스포머 모델을 사용해 실용적인 애플리케이션을 만들고 최적화하는 방법을 안내한다. 실습 위주로 구성되어 예제 코드를 직접 실행하면서 자신만의 실&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2369016915&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2369016915&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ciiev7/hyQ5x6YSFu/WSycYh9t6D8qC3cUKmauNK/img.jpg?width=204&amp;amp;height=260&amp;amp;face=0_0_204_260,https://scrap.kakaocdn.net/dn/sxyD1/hyQ6UsIRhE/E7QfyzaGIkDc1kYVhXaHi0/img.png?width=800&amp;amp;height=1017&amp;amp;face=0_0_800_1017,https://scrap.kakaocdn.net/dn/baLqOk/hyQ5sR8DN2/Cu6D6eW77bm3BcAa437kOk/img.jpg?width=580&amp;amp;height=773&amp;amp;face=0_0_580_773&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2369016915&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2369016915&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ciiev7/hyQ5x6YSFu/WSycYh9t6D8qC3cUKmauNK/img.jpg?width=204&amp;amp;height=260&amp;amp;face=0_0_204_260,https://scrap.kakaocdn.net/dn/sxyD1/hyQ6UsIRhE/E7QfyzaGIkDc1kYVhXaHi0/img.png?width=800&amp;amp;height=1017&amp;amp;face=0_0_800_1017,https://scrap.kakaocdn.net/dn/baLqOk/hyQ5sR8DN2/Cu6D6eW77bm3BcAa437kOk/img.jpg?width=580&amp;amp;height=773&amp;amp;face=0_0_580_773');&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;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아는 사람은 알겠지만 transformer 아키텍처는 2017년 google이 &quot;Attention is all you need&quot;이란 논문을 통해서 소개했다. 사실 이전의 NLP나 signal processing에는 LSTM이나 GRU로 대변되는 RNN 계열의 신경망으로 처리하는 방식에 비하여, 이 transformer 구조는 시퀀스 데이터에서 어떠한 패턴(예를 들어서 Attention같은 것)을 찾아내고, 대용량 데이터를 처리하는데 특화된 구조이다. 더욱이 뭔가의 RNN 계열처럼 기억소자 없는 상태에서 패턴을 찾는 방식이어서 굳이 언어처리가 아니더라도, 비전이나 의사 결정과 같은 다른 분야에도 활발하게 활용되고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 transformer를 설명하면서 빼놓을 수 없는 것이 바로 Hugging Face라는 회사다. 원래 이 회사는 2016년 10대를 대상으로 한 챗봇을 만드는 것으로 시작하다가, 현재는 이 transformer library를 유지하고 배포하는 주요 회사 중 하나가 되었다. 그리고 이 회사가 제공하는 서비스 중 하나가 바로 model hub를 통해서 pretrained transformer model을 배포하는 것인데, 아마 개인적으로 생각하기에는 transformer를 연구하고 활용하는 사람들은 대부분 이 library를 사용할 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20221230_225656.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4mNZX/btrUZYfGM2N/nN0VMhKb2KokFdXKtk8v7K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4mNZX/btrUZYfGM2N/nN0VMhKb2KokFdXKtk8v7K/img.jpg&quot; data-alt=&quot;트랜스포머를 활용한 자연어 처리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4mNZX/btrUZYfGM2N/nN0VMhKb2KokFdXKtk8v7K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4mNZX%2FbtrUZYfGM2N%2FnN0VMhKb2KokFdXKtk8v7K%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20221230_225656.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&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;이번에 소개할 책은 앞에서 소개한 Hugging Face사의 transformers package를 바탕으로 Text Classification, Multiligual NER, Text Generation, Summarization 등의 활용 방법을 심도있게 다룬 책이다. 이전에도 동 출판사에서 출간한 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B2201215526&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;구글 BERT의 정석&lt;/a&gt;&quot; (&lt;a href=&quot;https://talkingaboutme.tistory.com/entry/Book-Getting-Started-with-Google-BERT&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;리뷰&lt;/a&gt;)를 통해서 Transformer 구조의 발전된 형태인 BERT에 대해서 다룬 책이 있긴 했지만, 그 책은 실제 활용에 대한 책이라기 보다는 구조나 동작 원리, 다양한 적용분야에 대한 소개에 그쳤었던데 반해, 이 책은 진짜 python &quot;transformers&quot; package를 통해서 주제를 직접 구현해보는 내용을 다룬다. (참고로 &quot;구글 BERT의 정석&quot; 책에 몇안되는 예제 중 하나도 hugging face의 transformers package를 가지고 진행한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 생각하는 이 책의 큰 장점은 하나는 transformer 구조에 대해서 다루는 책들이 시중에 별로 없는 상황에서 그 내부와 활용방안을 디테일하게 소개해놨다는 점이다. 물론 HuggingFace사에서 자사의 패키지를 활용해서 작성한 개발서이기에 어떻게 보면 딱딱하게 느껴질 수도 있겠지만, 책을 읽어보면 구조에 대한 자세한 도식화부터 코드와 내용에 대한 기술이 유기적으로 되어 있어서 자연어처리를 주업으로 하는 사람에게는 이 transformer를 접목시키는데 큰 도움이 될 것 같다는 생각이 든다. 책중 인상깊었던 부분은 8장 효율적인 트랜스포머 구축 부분인데, 단순히 transformer 활용에만 머물지 않고, 성능 개선과 최적화에 대한 내용이 들어있고, 이에 필요한 다양한 패키지들을 접목방법에 대해서 소개한 부분이 좋았다. 혹시라고 Optuna나 Quantization 같은 기법에 대해서 관심있는 사람이라면 이 부분도 유심히 보면 좋을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주제가 &quot;자연어처리&quot;이기 때문에 비전이나 강화학습 분야를 연구하는 사람은 조금 관심이 떨어질 수 있겠지만, 혹시나 transformer구조에 대해서 관심을 가져볼까? 혹은 이런 거대모델을 학습하는 방법론에 대해서 배워볼 사람이라면 추천해볼만하다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아! 참고로 transformer 구조 자체가 복잡하기도 하고, 요구 연산량도 크기 때문에 그래도 어느정도 고사양의 PC가 요구된다. 역자분이 실제로 실습할 때 활용한 GPU도 Nvidia P100 (16GB)인데, 이 정도면 대략 RTX 2060 정도가 될 듯하다. 만약 GPU Memory가 부족하다 싶으면 Batch size를 줄이던지 하는 방법이 필요하겠다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원서 사이트 : &lt;a href=&quot;https://transformersbook.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;링크&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1672411583120&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;Natural Language Processing with Transformers Book&quot; data-og-description=&quot;&amp;ldquo;A wonderfully clear and incisive guide to modern NLP&amp;rsquo;s most essential library. Recommended!&amp;rdquo; &amp;mdash;Christopher Manning, Thomas M. Siebel Professor in Machine Learning, Stanford University Since their introduction in 2017, transformers have quickly beco&quot; data-og-host=&quot;transformersbook.com&quot; data-og-source-url=&quot;https://transformersbook.com/&quot; data-og-url=&quot;https://transformersbook.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dPwktT/hyQ6XJLHGH/MTIDVbrSzhIjRZeVma0KS0/img.png?width=891&amp;amp;height=969&amp;amp;face=0_0_891_969,https://scrap.kakaocdn.net/dn/bOPRXh/hyQ6Vd69Si/orar5yq2qKRR1juL7Pwcs0/img.png?width=891&amp;amp;height=969&amp;amp;face=0_0_891_969,https://scrap.kakaocdn.net/dn/cQBWM4/hyQ5AQb60c/2eGhQataXBEJZxR5kyPsek/img.jpg?width=400&amp;amp;height=525&amp;amp;face=0_0_400_525&quot;&gt;&lt;a href=&quot;https://transformersbook.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://transformersbook.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dPwktT/hyQ6XJLHGH/MTIDVbrSzhIjRZeVma0KS0/img.png?width=891&amp;amp;height=969&amp;amp;face=0_0_891_969,https://scrap.kakaocdn.net/dn/bOPRXh/hyQ6Vd69Si/orar5yq2qKRR1juL7Pwcs0/img.png?width=891&amp;amp;height=969&amp;amp;face=0_0_891_969,https://scrap.kakaocdn.net/dn/cQBWM4/hyQ5AQb60c/2eGhQataXBEJZxR5kyPsek/img.jpg?width=400&amp;amp;height=525&amp;amp;face=0_0_400_525');&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;Natural Language Processing with Transformers Book&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;A wonderfully clear and incisive guide to modern NLP&amp;rsquo;s most essential library. Recommended!&amp;rdquo; &amp;mdash;Christopher Manning, Thomas M. Siebel Professor in Machine Learning, Stanford University Since their introduction in 2017, transformers have quickly beco&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;transformersbook.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 repo: &lt;a href=&quot;https://github.com/nlp-with-transformers/notebooks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;원서&lt;/a&gt;, &lt;a href=&quot;https://github.com/rickiepark/nlp-with-transformers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;역서&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1672411692823&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - rickiepark/nlp-with-transformers: &amp;lt;트랜스포머를 활용한 자연어 처리&amp;gt; 예제 코드를 위한 저장소입&quot; data-og-description=&quot;&amp;lt;트랜스포머를 활용한 자연어 처리&amp;gt; 예제 코드를 위한 저장소입니다. Contribute to rickiepark/nlp-with-transformers development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/rickiepark/nlp-with-transformers&quot; data-og-url=&quot;https://github.com/rickiepark/nlp-with-transformers&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bUGz0w/hyQ6P52c4m/7Y7DL1uDG8KXiYhW3uIYbk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_150_1049_228&quot;&gt;&lt;a href=&quot;https://github.com/rickiepark/nlp-with-transformers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/rickiepark/nlp-with-transformers&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bUGz0w/hyQ6P52c4m/7Y7DL1uDG8KXiYhW3uIYbk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_150_1049_228');&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;GitHub - rickiepark/nlp-with-transformers: &amp;lt;트랜스포머를 활용한 자연어 처리&amp;gt; 예제 코드를 위한 저장소입&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;트랜스포머를 활용한 자연어 처리&amp;gt; 예제 코드를 위한 저장소입니다. Contribute to rickiepark/nlp-with-transformers development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;og_1672411629578&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - nlp-with-transformers/notebooks: Jupyter notebooks for the Natural Language Processing with Transformers book&quot; data-og-description=&quot;Jupyter notebooks for the Natural Language Processing with Transformers book - GitHub - nlp-with-transformers/notebooks: Jupyter notebooks for the Natural Language Processing with Transformers book&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/nlp-with-transformers/notebooks&quot; data-og-url=&quot;https://github.com/nlp-with-transformers/notebooks&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/4poL8/hyQ6ZgvJeo/2xz0zKFkmzdidKOdtuqgRK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/nlp-with-transformers/notebooks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/nlp-with-transformers/notebooks&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/4poL8/hyQ6ZgvJeo/2xz0zKFkmzdidKOdtuqgRK/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;GitHub - nlp-with-transformers/notebooks: Jupyter notebooks for the Natural Language Processing with Transformers book&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Jupyter notebooks for the Natural Language Processing with Transformers book - GitHub - nlp-with-transformers/notebooks: Jupyter notebooks for the Natural Language Processing with Transformers book&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;</description>
      <category>Hobby/Book</category>
      <category>huggingface</category>
      <category>Transformer</category>
      <category>자연어처리</category>
      <category>트랜스포머</category>
      <category>트랜스포머를 활용한 자연어처리</category>
      <category>한빛미디어</category>
      <category>허깅페이스</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1107</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Natural-Language-Processing-with-Transformers#entry1107comment</comments>
      <pubDate>Fri, 30 Dec 2022 23:48:44 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 파이썬 라이브러리를 활용한 텍스트 분석</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Blueprints-for-text-analytics-using-python</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8501475551&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;파이썬 라이브러리를 활용한 텍스트 분석&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669558136964&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;파이썬 라이브러리를 활용한 텍스트 분석&quot; data-og-description=&quot;분석하려는 텍스트에 맞는 처리 기법을 소개하는 도서로 실제 모범 사례를 기반으로 상황에 맞게 설계한 텍스트 전처리 파이프라인 구축, N-그램 분석, 텍스트 벡터화 등 다양한 전략과 그때 필&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8501475551&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8501475551&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/oC4El/hyQH6IFGSX/s8cvzkKNHuKFLNH5KrK1A0/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/c2V24w/hyQJH1AnMe/kB047WFeFwbCt0uGrBZ1a0/img.jpg?width=550&amp;amp;height=733&amp;amp;face=0_0_550_733,https://scrap.kakaocdn.net/dn/dn6wYM/hyQH2lXJZu/6vuiU1omjANuU87JJylpn0/img.jpg?width=550&amp;amp;height=733&amp;amp;face=0_0_550_733&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8501475551&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B8501475551&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/oC4El/hyQH6IFGSX/s8cvzkKNHuKFLNH5KrK1A0/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/c2V24w/hyQJH1AnMe/kB047WFeFwbCt0uGrBZ1a0/img.jpg?width=550&amp;amp;height=733&amp;amp;face=0_0_550_733,https://scrap.kakaocdn.net/dn/dn6wYM/hyQH2lXJZu/6vuiU1omjANuU87JJylpn0/img.jpg?width=550&amp;amp;height=733&amp;amp;face=0_0_550_733');&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;분석하려는 텍스트에 맞는 처리 기법을 소개하는 도서로 실제 모범 사례를 기반으로 상황에 맞게 설계한 텍스트 전처리 파이프라인 구축, N-그램 분석, 텍스트 벡터화 등 다양한 전략과 그때 필&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인공지능이 실생활에 적용되는 분야를 꼽으라면 대표적인 분야가 보통 NLP로 표현되는 자연어처리일 것이다. 몇년전만 해도 뭔가 시대를 앞서나가는 듯한 사례를 제공했던 AI assistant도 이제 다양한 업체에서 제공하는 대표적인 케이스가 되었고, 이밖에도 사용자의 감정을 이해하고 어떤 상품을 추천하는데 있어서 자연어처리는 이런 기술들을 실제로 실현시킬 수 있는 핵심 기술이 되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20221127_230126.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kSltR/btrShIsifjY/DwSkxgEXJp4kYMBfo8bAXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kSltR/btrShIsifjY/DwSkxgEXJp4kYMBfo8bAXK/img.jpg&quot; data-alt=&quot;파이썬 라이브러리를 활용한 텍스트 분석&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kSltR/btrShIsifjY/DwSkxgEXJp4kYMBfo8bAXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkSltR%2FbtrShIsifjY%2FDwSkxgEXJp4kYMBfo8bAXK%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;4032&quot; height=&quot;2268&quot; data-filename=&quot;20221127_230126.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&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;이번에 다루는 책도 역시 이 자연어처리에 관련된 내용을 다루고 있다. 그런데 일단 책의 내용을 다루기 전에 책 제목에 대해서 언급하고 싶은게 있다. 사실 이 책의 원제는 Blueprints for Text Analytics Using Python 라는 제목을 가지고 있는데 직역을 하자면 파이썬을 활용한 텍스트 분석에 대한 청사진을 뜻한다. 제목만큼이나 이 책에서는 다양한 라이브러리와 어떻게 보면 머신러닝과 딥러닝을 활용한 자연어 처리에 대한 내용을 풍부하게 담고 있다. 그런데 한국어판에서는 파이썬 라이브러리를 활용한 텍스트 분석이라는 제목을 가졌는데, 사실 시중에 나와있는 대부분의 자연어처리 책들이 대부분 파이썬 라이브러리를 사용한다. 어떻게 보면 책이 가진 특징을 잘 못 살린 케이스가 아닌가 싶다. 물론 이런 제목을 가진 나름의 이유가 있겠지만..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 이 책은 말한대로 텍스트 분석에 필요한 전처리 기법 및 머신러닝을 통한 기본적인 분류 기법, 더 나아가 transformer를 활용한 감정 분석, knowledge graph와 같은 고급 기법들에 대한 소개가 다뤄진다. 단순히 이론적인 설명만 기술되어 있는 것이 아니라 이론 내용을 직접 다뤄볼 수 있는 예제가 같이 제공되는데, 생각보다 이 예제의 퀄리티가 좋다고 생각한다. (실제로 원서의 평에도 github을 통한 예제를 통해서 내용 이해가 쉬웠다는 내용이 있기도 하다.) 그리고 개인적으로는 물론 이론적인 내용도 어려운 부분이 있겠지만, 자연어처리를 실제로 다루면 어려운 부분 중 하나가 주변 라이브러리 사용법이 너무 복잡하다는 것인데, 이 책은 그런 부분에 대한 설명도 포함하면서 뭔가 응용을 할 수 있는 여지도 제공한다. 참고로 이 책에서는 자연어처리를 위한 라이브러리로 spaCy나 Gensim, NLTK 등을 사용했고, (아 여기까지 읽다보니까 어떻게 보면 이 관점에서 제목을 지었을 수도 있었겠다 하는 생각이 들기도 했다.) 혹시라도 이 부분이 궁금한 사람은 출판사에서 제공하는 미리보기에 각 장별 사용 라이브러리와 데이터셋에 대한 기술이 요약해서 되어 있으므로 한번 보면 좋을것 같다. 이론적인 내용을 떠나 마지막 장에서 다루는 클라우드 환경에서 데이터 분석을 할 수 있는 방법에 대해서 소개되어 있는 부분은 진짜 현업에서 활용할 수 있을 법한 내용을 다뤘기에 해당 분야로 일하는 사람들에게는 조금 더 현실적인 내용이 되지 않을까 생각한다.&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>파이썬 라이브러리를 활용한 텍스트 분석</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1106</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Blueprints-for-text-analytics-using-python#entry1106comment</comments>
      <pubDate>Mon, 28 Nov 2022 00:05:29 +0900</pubDate>
    </item>
    <item>
      <title>[RL] CS285 - Reducing Variance</title>
      <link>https://talkingaboutme.tistory.com/entry/RL-CS285-Reducing-Variance</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;(해당 포스트는 UC Berkeley 에서 진행된&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot;&gt;CS285: Deep Reinforcement Learning, Decision Making and Control&lt;/a&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;를 요약한 내용이며, 그림들은 강의 장표에서 발췌한 내용입니다.)&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667970964376&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;CS 285&quot; data-og-description=&quot;GSI Yuqing Du yuqing_du@berkeley.edu Office Hours: Wednesday 10:30-11:30am (BWW 1206)&quot; data-og-host=&quot;rail.eecs.berkeley.edu&quot; data-og-source-url=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot; data-og-url=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;CS 285&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;GSI Yuqing Du yuqing_du@berkeley.edu Office Hours: Wednesday 10:30-11:30am (BWW 1206)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;rail.eecs.berkeley.edu&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Reducing variance&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스트에서 소개했다시피, policy gradient 알고리즘은 high variance로 인해서 practical problem에 적용하기 어려웠다. 그러면 이 variance를 줄일 수 있는 방법이 있을까? 다시 policy gradient의 핵심 부분을 살펴본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta}J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \big( \sum_{t=1}^T \nabla_{\theta} \log \pi_{\theta} (a_{i, t} \vert s_{i, t}) \big) \big(\sum_{t=1}^T r(s_{i, t}, a_{i, t})\big) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에서 &lt;a href=&quot;https://en.wikipedia.org/wiki/Causality&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;causality&lt;/a&gt;라는 개념을 적용했다. (나는 사실 causality라는 개념을 signal processing 공부할때 처음 배웠던 내용인데, 찾아보면 굳이 주제에 한정짓지 않은 보편적인 개념인것 같다.) 이 causality는 시간적으로 현재에 발생한 일이 과거에 영향을 끼치지 않는다는 개념이고, RL에 한정지어서 설명하자면 time \(t'\)에서 수행되었던 policy \(\pi\)는 \(t'\)시점 이전의 time \(t\), 즉 \(t &amp;lt; t'\)때의 reward에 영향을 미치지 않는다는 것을 나타낸다. 어떻게 보면 causality 특성이 markov property와 비슷하다고 느낄 수 있지만, markov property는 state 관점에서 미래에 발생한 state가 과거의 state와 독립적이라는 것을 설명하는 요소이기 때문에 완전히 다르다. 이전의 partial observability에서 나왔던 것처럼 어떤 process를 따르냐에 따라서 markov property가 성립할 수도, 혹은 성립하지 않을 수도 있지만, causality는 항상 참인 명제이다. (강의에 나온것처럼 시간을 여행할 수 있다던가 과거의 action에 영향을 줄 수 있는 case라면 설명이 다르겠지만...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 위의 수식을 다시 괄호를 정리해서 보면, 아래와 같이 되는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta}J(\theta) \approx \frac{1}{N} \sum_{i=1}^N&amp;nbsp; \sum_{t=1}^T \nabla_{\theta} \log \pi_{\theta} (a_{i, t} \vert s_{i, t}) \big(\sum_{t'=1}^T r(s_{i, t'}, a_{i, t'})\big) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 causality 측면에서 보면 timestep \(t\)가 policy와 reward에 모두 영향을 주기 때문에 현재의 policy가 과거의 reward에 영향을 주는 case가 발생하게 된다. 그래서 이 causality를 적용해서 과거의 reward가 영향을 받지 않게끔 reward term을 수정하면 아래와 같이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta}J(\theta) \approx \frac{1}{N} \sum_{i=1}^N&amp;nbsp; \sum_{t=1}^T \nabla_{\theta} \log \pi_{\theta} (a_{i, t} \vert s_{i, t}) \big(\sum_{t'=t}^T r(s_{i, t'}, a_{i, t'})\big) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 이렇게 하면 sample수가 달라졌기 때문에 &lt;span&gt;기존의 estimator에 영향이 생기지만, 그래도 전체적으로 unbiased한 성향은 유지할 수 있다. 그리고 전체적으로 sample 수가 줄어들었기 때문에 variance도 같이 줄어든 효과를 가져온다. 참고로 이렇게 causality로 인해서 변화된 부분인&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;$$ \sum_{t'=t}^T r(s_{i, t'}, a_{i, t'}) $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;을 &lt;b&gt;reward-to-go&lt;/b&gt;라고 하고(아마 내가 번역했던 책에서는 이동 보상이라고 표현했던 것 같다..), 수집한 reward 중 policy가 과거에 얻은 reward를 제외한 나머지 reward의 총합을 나타내고, 수식상에서는 보통 \(\hat{Q}_{i, t}\)로 표현된다. 그래서 이를 policy gradient에 반영한 식은 아래와 같이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta}J(\theta) \approx \frac{1}{N} \sum_{i=1}^N&amp;nbsp; \sum_{t=1}^T \nabla_{\theta} \log \pi_{\theta} (a_{i, t} \vert s_{i, t}) \hat{Q}_{i, t} $$&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Baselines&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이밖에도 variance를 낮출 수 있는 방법이 있는데, 그 중 하나가 이번에 소개할 baseline 기법이다. policy gradient 수식을 가져오면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \log p_{\theta}(\tau) r(\tau) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와 같은데, 이 식은 기본적으로 이전 포스트에서 설명했던 것처럼 good trajectory의 log probability를 높이고, bad trajectory의 log probability를 낮추는 것으로 동작한다. 그리고 일반적으로 이 경우는 good trajectory가 positive reward를 가지고, bad trajectory는 negative reward를 가지는 것을 말한다. 그런데 만약 전체 reward 분포가 이렇게 positive / negative가 아닌, 그냥 positive로만 되어 있는 경우는 어떨까? 예를 들어서 good trajectory는 매우 큰 reward를 가지고, bad trajectory는 매우 작은 reward를 가지게끔 되면, 결과적으로 모든 trajectory에 대한 log-probability가 증가하는 방향으로 바뀐다. 이를 해결할 수 있게 어떤 기준점, 즉 baseline을 정하고, reward term에 이 baseline을 반영해서 0을 기준으로 positive/negative로 나눠질 수 있게 바꾸는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \log p_{\theta}(\tau) [r(\tau) - b] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 \(b = \frac{1}{N}\sum_{i=1}^N r(\tau) \)를 말한다. 이렇게 하면, 평균 보상값보다 좋은 trajectory는 log probability가 커지고 평균 보상값보다 나쁜 trajectory는 낮아지는 효과가 생기면서 결과적으로 variance를 낮추는 효과를 보여주게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;applying_baseline.png&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;271&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nIHiQ/btrQRniAq1o/YhZeKAep4sWQdqv9HN39v0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nIHiQ/btrQRniAq1o/YhZeKAep4sWQdqv9HN39v0/img.png&quot; data-alt=&quot;그림 1. Baseline을 적용하면서 log probability의 변화&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nIHiQ/btrQRniAq1o/YhZeKAep4sWQdqv9HN39v0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnIHiQ%2FbtrQRniAq1o%2FYhZeKAep4sWQdqv9HN39v0%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;580&quot; height=&quot;271&quot; data-filename=&quot;applying_baseline.png&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;271&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 1. Baseline을 적용하면서 log probability의 변화&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 결과적으로 baseline을 빼주면 기존의 policy gradient에서 새로운 term인 \(\mathbb{E}[\nabla_{\theta} \log p_{\theta}(\tau)b]\)를 빼준 셈인데, 이렇게 해도 학습에 영향이 없을까? 이때 이전에 사용했던 log-derivative trick을 다시 활용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ p_{\theta} (\tau) \nabla_{\theta} \log p_{\theta}(\tau) = \nabla_{\theta} p_{\theta}(\tau) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 동일한 trick을 써서 정리를 해보면 아래와 같이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathbb{E}[\nabla_{\theta} \log p_{\theta}(\tau) b ] = \int p_{\theta} (\tau) \nabla_{\theta} \log p_{\theta} (\tau) b d\tau = \int \nabla_{\theta} p_{\theta} (\tau) b d\tau = b \nabla_{\theta} \int p_{\theta}(\tau) d\tau $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 마지막 적분은 아마 아는 사람은 알겠지만, 확률에 대한 적분이므로 총합이 1이다. 이 상수에 대한 \(\nabla_{\theta}\)를 구한 것이므로 최종적으로는 0이라는 결과가 나온다. 즉, 이렇게 추가된 expectation term은 전체 policy gradient를 계산하는데 전혀 영향을 끼치지 않는다. 이 결과는 trajectory를 infinite하다고 생각했을 때 0인 것이지, finite sample이라고 가정하면 0이 아닌데, 이런 특성을 통해서 policy gradient가 unbiased하면서 variance를 낮추는 효과를 계속 누릴 수 있다. 물론 지금 이 부분에 다루는 것처럼 trajectory의 평균을 baseline으로 삼는 것이 항상 좋은 것은 아니지만, 그래도 적어도 variance를 낮추는 기대 효과를 가져올 수 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Analyzing variance&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 지금까지 계속 high variance를 낮출 수 있는 방법에 대해서 소개했는데, 그러면 이 variance라는 것을 표현할 수 있을까? 사실 이게 가능하다면 이 variance를 낮출 수 잇도록 optimal baseline을 설계할 수 있는 근거가 생기게 된다. 가장 기본적인 내용이지만 variance를 구하는 식은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \text{Var}[x] = \mathbb{E}[x^2] - \mathbb{E}[x]^2 $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 식에 맞춰서 policy gradient의 variance는 다음과 같이 표현할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \text{Var} = \mathbb{E}_{\tau \sim p_{\theta}(\tau)}[(\nabla_{\theta} \log p_{\theta}(\tau)(r(\tau) - b))^2] - \mathbb{E}_{\tau \sim p_{\theta}(\tau)}[\nabla_{\theta} \log p_{\theta}(\tau)(r(\tau) - b)]]^2 $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 두번째 term은 바로 앞에서 소개했던 것처럼 \(b\)를 추가한 영향이 없으므로 단순히 \(\mathbb{E}_{\tau \sim p_{\theta}(\tau)}[\nabla_{\theta} \log p_{\theta}(\tau) r(\tau)] \)로 축약할 수 있다. 다시 말해 이 값은 \(b\)와 상관없는 수식이다. 그러면 이 전체 variance를 \(b\)에 관해서 미분을 취하면 아래와 같이 정리된다.(참고로 \(g(\tau)\)는 \(\nabla_{\theta} \log p_{\theta}(\tau)\)를 줄인 것이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \begin{aligned} \frac{d\text{Var}}{db} = \frac{d}{db} \mathbb{E}[g(\tau)^2(r(\tau) - b)^2]&amp;nbsp; &amp;amp;= \frac{d}{db}\big(\mathbb{E}[g(\tau)^2 r(\tau)^2]&amp;nbsp; - 2 \mathbb{E}[g(\tau)^2r(\tau)b] + b^2 \mathbb{E}[g(\tau)^2]\big) \\ &amp;amp;= -2 \mathbb{E}[g(\tau)^2 r(\tau)] + 2b\mathbb{E}[g(\tau)^2] = 0 \end{aligned} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 첫번째 term에 대한 식을 쭉 풀어서 해를 찾으면 되는데, 중간에 풀어보면 \(b\)와 관련된 수식이 미분을 통해서 없어지고, 최종적으로 \(b\)에 대한 수식으로 정리할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ b = \frac{\mathbb{E}[g(\tau)^2 r(\tau)]}{\mathbb{E}[g(\tau)^2]} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 optimal baseline을 구할 수 있는데, 이 baseline을 구성하는 요소가 앞에서 언급한 grad-log-pi와 reward term이다. 그래서 policy를 구성하는 parameter가 100개이면, gradient하면서 각 parameter에 대한 baseline이 다 생성이 되고, 이 optimal baseline은 결국 기대 reward인데, gradient에 의해서 weight가 가해진 형태임을 알 수 있다.&lt;/p&gt;</description>
      <category>Study/AI</category>
      <category>baseline</category>
      <category>Causality</category>
      <category>Policy Gradient</category>
      <category>reward-to-go</category>
      <category>Variance</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1104</guid>
      <comments>https://talkingaboutme.tistory.com/entry/RL-CS285-Reducing-Variance#entry1104comment</comments>
      <pubDate>Wed, 9 Nov 2022 23:51:07 +0900</pubDate>
    </item>
    <item>
      <title>[RL] CS285 - Understanding Policy Gradients</title>
      <link>https://talkingaboutme.tistory.com/entry/RL-CS285-Understanding-Policy-Gradients</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;(해당 포스트는 UC Berkeley 에서 진행된&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot;&gt;CS285: Deep Reinforcement Learning, Decision Making and Control&lt;/a&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;를 요약한 내용이며, 그림들은 강의 장표에서 발췌한 내용입니다.)&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667901986667&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;CS 285&quot; data-og-description=&quot;GSI Yuqing Du yuqing_du@berkeley.edu Office Hours: Wednesday 10:30-11:30am (BWW 1206)&quot; data-og-host=&quot;rail.eecs.berkeley.edu&quot; data-og-source-url=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot; data-og-url=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;CS 285&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;GSI Yuqing Du yuqing_du@berkeley.edu Office Hours: Wednesday 10:30-11:30am (BWW 1206)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;rail.eecs.berkeley.edu&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Comparison to maximum likelihood&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스트의 마지막에 다뤘던 식이 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta}J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \big( \sum_{t=1}^T \nabla_{\theta} \log \pi_{\theta} (a_{i, t} \vert s_{i, t}) \big) \big(\sum_{t=1}^T r(s_{i, t}, a_{i, t})\big) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 위 식에서 수 식을 통해서 도출한 \(\nabla_{\theta} \log \pi_{\theta} (a_{i, t} \vert s_{i, t})\)가 어떤 의미를 가지고 있을까? \(\pi_{\theta}\)는 말 그대로 특정 state에서 특정 action을 취할 확률을 나타내는 것이고, \(\log \pi_{\theta}\)는 결국 log probability를 구하는 형태가 된다. 그래서 결과적으로 여기에 gradient를 취한것이 될텐데, 쉽게 말해서 신경망이 어떤 policy를 가지고 있을 때 output이 log를 취한 형태가 나오고, 그러면 이때의 derivative를 바탕으로 신경망을 update하는 것이다. 보통 supervised learning을 하게 되면 취할 수 있는 방법 중 하나가 Maximum Likelihood가 있는데, 이때 log probability를 maximize하는 형태로 진행되는데, 이때의 cost function을 보면 policy gradient와 유사한 부분이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \begin{aligned} &amp;amp;\text{policy gradient: } \nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \big(\sum_{t=1}^T \nabla_{\theta} \log \pi_{\theta} (a_{i, t} \vert s_{i, t}) \big) \big( \sum_{t=1}^T r(s_{i, t}, a_{i, t})\big) \\&lt;br /&gt;&amp;amp;\text{maximum likelihood: } \nabla_{\theta} J_{ML}(\theta) \approx \frac{1}{N} \sum_{i=1}^N \big( \sum_{t=1}^T \nabla_{\theta} \log \pi_{\theta} (a_{i, t} \vert s_{i, t}) \big) \end{aligned} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 이전 강의 중 Imitation learning을 본 사람이라면 알겠지만, Imitation learning이 딱 supervised learning처럼 maximum likelihood 방식으로 학습하는 것이다. 아래의 그림이 Policy Gradient와 Maximum likelihood로 gradient를 구하는 방식의 차이를 나타낸 것인데, Policy Gradient는 state와 action로 policy의 parameter \(\theta\)를 학습하는 방면, Maximum likelihood에서는 state, action에 대한 pair를 일종의 학습 데이터로 쌓아놓은 상태에서 그걸 가지고 supervised learning을 하는 것이다. 그래서 앞의 수식 비교에서도 명확하게 차이가 존재하는 부분은 rollout된 reward의 총합이 cost function을 계산할때 고려가 되냐 여부에 따르는 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;rl_vs_ml.png&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkTvT2/btrQHBwHR9g/FH09Y8pHqdPteyIs7kqSB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkTvT2/btrQHBwHR9g/FH09Y8pHqdPteyIs7kqSB1/img.png&quot; data-alt=&quot;그림 1. Policy Gradient와 Maximum Likelihood gradient의 차이&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkTvT2/btrQHBwHR9g/FH09Y8pHqdPteyIs7kqSB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkTvT2%2FbtrQHBwHR9g%2FFH09Y8pHqdPteyIs7kqSB1%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;928&quot; height=&quot;367&quot; data-filename=&quot;rl_vs_ml.png&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;367&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 1. Policy Gradient와 Maximum Likelihood gradient의 차이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 이 부분이 가장 중요한 요소인데, 막연하게 maximum likelihood처럼 gradient를 계산하게 되면 어떤 state에서 어떤 action을 취했는지와는 상관없이 grad-log-pi term이 작아지는 방향으로 학습이 되는 반면, policy gradient는 reward sum에 따라서, 즉 좋은 trajectory냐 나쁜 trajectory냐에 따라서 gradient의 update방향이 달라지게 된다. 예를 들어서 나쁜 trajectory여서 reward sum이 negative라면 해당 trajectory는 덜 하는 방향으로, 반대로 좋은 trajectory여서 reward sum이 positive라면 해당 trajectory에 나와있는 대로 선호하게 학습이 된다는 것이다. 결과적으로 요약하자면 policy gradient는 reward sum이 weighted되어 있는 maximum likelihood 방식이라고 할 수 있겠다. 또 이런 특성은 PyTorch와 같이 auto-grad를 제공하는 tool에서는 유용하게 써먹을 수 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Example: Gaussian policy&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Policy gradient를 통해 humanoid robot을 걷게끔 policy를 학습하는 예제를 다뤄보면, 이때의 policy는 어떤 continuous 값을 가지는 action을 output으로 내보내는 형태로 되어 있다. 만약 우리가 학습해야 할 policy \(\pi\)의 형태를 아래와 같다고 가정해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \pi_{\theta}(a_t \vert s_t) = \mathcal{N}(f_{NN}(s_t); \Sigma) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 policy의 output은 신경망에 \(s_t\)를 넣었을때 나오는 값을 평균으로 하고 \(\Sigma\)를 분산으로 하는 multivariate normal distribution, 혹은 gaussian distribution이라고 하는 distribution의 형태로 나온다. 이때 policy gradient를 하기 위해서는 맨 처음으로 해야 될 것이 policy term에 \(\log\)를 취하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \log \pi_{\theta}(a_t \vert s_t ) = - \frac{1}{2} \Vert f_{NN}(s_t) - a_t \Vert_{\Sigma}^2 + \text{const} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에 \(\theta\)에 관해서 미분을 취하면 아래의 식으로 나오게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta} \log \pi_{\theta} (a_t \vert s_t) = - \frac{1}{2} \Sigma^{-1} (f_{NN}(s_t) - a_t) \frac{df}{d\theta} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(식이 복잡한데, 아마 normal distribution의 log-likelihood 부분을 찾아보면 위의 식이 나와있을 것이다.)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;What did we just do?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 이전 포스트에서 다룬 REINFORCE 알고리즘을 다시 가져와보자.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-ke-style=&quot;style3&quot;&gt;\(\pi_{\theta}(a_t \vert s_t)\)를 수행해서 trajectory \(\tau^i\)를 샘플링한다.&lt;/li&gt;
&lt;li data-ke-style=&quot;style3&quot;&gt;\(\nabla_{\theta} J(\theta) \approx \sum_i ( \sum_t \nabla_{\theta} \log \pi_{\theta} (a_t^i \vert s_t^i)) (\sum_t r(s_t^i, a_t^i)) \)&lt;/li&gt;
&lt;li data-ke-style=&quot;style3&quot;&gt;\(\theta \leftarrow \theta + \alpha \nabla_{\theta} J(\theta) \)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 과정을 통해서 grad-log-pi term을 구했으니까, 이제 위 알고리즘의 두번째를 계산할 수 있다. reward sum이야 실제로 policy를 수행하면서 얻은 reward를 넣으면 된다. 결국 state action pair를 trajectory \(tau\)로 표현하면 아래와 같은 식으로 정리된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \nabla_{\theta} \log \pi_{\theta}(\tau_i) r(\tau_i) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 학습이 진행되면 될수록 good trajectory에서 수행된 action은 점점 자주하게 되고, bad trajectory에서 수행된 action은 덜 하게 되는 경향을 띄게 될 것이다. 이는 단순히 주어진 sample trajectory에 대해서 모두 학습하는 maximum likelihood 방식과는 다르며, 어떻게 보면 강화학습의 큰 맥락인 &quot;trial-and-error&quot;을 어느정도 형식화한 형태라고 볼 수 있다. 간단히 말해서 시도해보고 좋은 행동은 자주하고, 나쁜 행동은 덜 하는 방향으로 학습된다고 보면 되겠다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Partial observability&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;partial_observability.png&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqaJNU/btrQPCAwXjR/blNJb3FK2zA5eFIindAQGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqaJNU/btrQPCAwXjR/blNJb3FK2zA5eFIindAQGK/img.png&quot; data-alt=&quot;그림 2. partial observability&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqaJNU/btrQPCAwXjR/blNJb3FK2zA5eFIindAQGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqaJNU%2FbtrQPCAwXjR%2FblNJb3FK2zA5eFIindAQGK%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;931&quot; height=&quot;210&quot; data-filename=&quot;partial_observability.png&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;210&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 2. partial observability&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 이전 포스트에서 처음에 작성한 내용을 기억할지 모르겠지만, 전제로 둔 조건중에 policy가 모든 state에 대해서 관찰이 가능하다는 것이 있었고, 이때문에 모든 수식에 state \(s_t\)를 사용했다. 그런데 real world problem이나 대부분의 강화학습 문제는 이 state \(s_t\)가 아닌 observation \(o_t\)를 사용하는 형태로 되어 있다. 즉, 모든 정보가 아닌 일부분의 정보만 가지고 action을 추론해야 하는 것이다. 뭔 차이냐고 생각할 수도 있겠지만, 가장 큰 차이는 observation의 경우 state처럼 markov property를 만족하지 않을 수 있다는 것이다. markov property라고 하면 현재 state는 과거 state의 영향을 받지 않는다는 특성인데, observation은 과거의 observation의 영향을 받지 않는다고 단언할 수 없기 때문에 기본적으로 markov property가 성립하지 않는다고 설정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행인 것은 실제로 policy gradient를 구하는 과정에서 이 markov property를 활용하는 부분이 없다는 것이다. 그래서 기존의 \(s_t\)를 사용해서 계산하던 cost function의 gradient는 \(s_t\)를 그대로 \(o_t\)로 바꿔서 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \big( \sum_{t=1}^T \nabla_{\theta} \log \pi_{\theta} (a_{i, t} \vert o_{i, t}) \big) \big( \sum_{t=1}^T r(o_{i, t}, a_{i, t})\big) $$&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;What is wrong with the policy gradient?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 policy gradient 알고리즘에 대해서 쭉 설명했지만, 사실 그냥 알고리즘을 바로 학습에 적용하면 잘 동작하지 않는다. 밑의 예시를 한번 살펴보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;reward_distribution.png&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BeyO0/btrQN7hq0ZH/jqs2IvxPsXMHTRO577kAK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BeyO0/btrQN7hq0ZH/jqs2IvxPsXMHTRO577kAK0/img.png&quot; data-alt=&quot;그림 3. Good Trajectory와 Bad Trajectory에 따른 probability distribution 변화&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BeyO0/btrQN7hq0ZH/jqs2IvxPsXMHTRO577kAK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBeyO0%2FbtrQN7hq0ZH%2Fjqs2IvxPsXMHTRO577kAK0%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;896&quot; height=&quot;360&quot; data-filename=&quot;reward_distribution.png&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 3. Good Trajectory와 Bad Trajectory에 따른 probability distribution 변화&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞에서 언급했던 것처럼 policy gradient는 'trial-and-error' 방식으로 학습하면서 good trajectory를 만든 policy를 자주 수행하고, bad trajectory를 만드는 policy는 덜 수행하는 방향으로 update된다. 참고로 위의 그래프에서 초록색 bar는 해당 trajectory의 reward값 \(r(\tau)\)를 나타낸 것이고, 파란색 curve는 해당 trajectory의 policy인 \(\log\pi_{\theta}(\tau)\), 즉 log probability를 나타낸 것이다. 그러면 negative reward를 받은 trajectory에 대한 log-probability는 낮아지고, positive reward를 받은 trajectory에 대한 2개 샘플의 log-probability는 커질 것이고, 결과적으로 distribution이 점선처럼 이동하게 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;reward_distribution2.png&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RNu0r/btrQQiu14lp/OENG5JIDwqpqMCBS46h8L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RNu0r/btrQQiu14lp/OENG5JIDwqpqMCBS46h8L0/img.png&quot; data-alt=&quot;그림 4. Reward에 constant를 더했을때의 probability distribution 변화&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RNu0r/btrQQiu14lp/OENG5JIDwqpqMCBS46h8L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRNu0r%2FbtrQQiu14lp%2FOENG5JIDwqpqMCBS46h8L0%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;906&quot; height=&quot;265&quot; data-filename=&quot;reward_distribution2.png&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;265&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 4. Reward에 constant를 더했을때의 probability distribution 변화&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 이제는 전체 reward값 자체에 어떤 constant값을 추가해서 위와 같은 경향성을 띈다고 가정해보자. constant를 추가해도 trajectory의 좋고 나쁜 경향성은 유지되고 있으며, 실제로 constant값이 추가되어도 해당 값의 영향은 optimal policy를 구하는 과정에서 max값을 취하면서 없어진다. 그런데 그 경향성이 유지됨에도 불구하고, policy의 distribution이 바로 앞의 그래프보다는 좋은 trajectory를 보이는 policy에 대한 log-probability에 몰리지 않는 성향을 보인다. reward에 offset을 추가했다는 것만으로 이렇게 log-probability 모양이 바뀌는 모습은 이런 policy gradient 방법이 high variance라는 단점을 가지고 있다는 것을 보여주는 것이다. 쉽게 말해서 supervised learning에서 overfit되는 것처럼 학습된 데이터 이외의 unseen data에서는 잘 동작하지 않는 것이다. 이때문에 real world problem에서는 이렇게 policy gradient가 잘 동작하지 않는데, 물론 이를 극복하기 위해 variance를 낮추는 기법이 많이 나와있다.&lt;/p&gt;</description>
      <category>Study/AI</category>
      <category>high variance</category>
      <category>maximum likelihood</category>
      <category>Policy Gradient</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1103</guid>
      <comments>https://talkingaboutme.tistory.com/entry/RL-CS285-Understanding-Policy-Gradients#entry1103comment</comments>
      <pubDate>Wed, 9 Nov 2022 23:26:13 +0900</pubDate>
    </item>
    <item>
      <title>[RL] CS285 - Policy Gradients</title>
      <link>https://talkingaboutme.tistory.com/entry/RL-CS285-Policy-Gradients</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트는 UC Berkeley 에서 진행된 &lt;a href=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CS285: Deep Reinforcement Learning, Decision Making and Control&lt;/a&gt;를 요약한 내용이며, 그림들은 강의 장표에서 발췌한 내용입니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1667874747214&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;CS 285&quot; data-og-description=&quot;GSI Yuqing Du yuqing_du@berkeley.edu Office Hours: Wednesday 10:30-11:30am (BWW 1206)&quot; data-og-host=&quot;rail.eecs.berkeley.edu&quot; data-og-source-url=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot; data-og-url=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://rail.eecs.berkeley.edu/deeprlcourse/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;CS 285&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;GSI Yuqing Du yuqing_du@berkeley.edu Office Hours: Wednesday 10:30-11:30am (BWW 1206)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;rail.eecs.berkeley.edu&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;The goal of reinforcement learning&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 강의 주제는 신경망을 활용한 강화학습을 다루는 것이다. 강화학습의 목표라고 하면 어떤 환경에서 잘 동작하는 policy를 찾는 것인데, Deep RL에서는 이 policy가 신경망으로 표현된다. 그래서 이 policy를 \(\pi\)라고 표현한다면, 신경망의 weight \(\theta\)에 의해서 어떤 policy인지 결정되기 때문에 일반적으로는 \(\pi_{\theta}\)라고 표기한다. 그리고 추가로 policy의 역할은 어떤 state에서 어떤 action이 가장 좋은 것인지를 결정하는 일종의 원칙이기 때문에, 이를 신경망으로 표현한다면 state를 input으로 받고, action을 output으로 내보내는 형태로 생각해볼 수 있다. 결과적으로 어떤 상태일때 특정 행동을 취할 확률로 policy를 나타내기에, 이를 조건부 확률 \(\pi_{\theta}(a \vert s) \)로 표현하게 되고 이렇게 놓고 보면 결국 policy는 특정 state \(s\)에서 취할 수 있는 action \(a\)에 대한 확률 분포라고 설명할 수 있다. 참고로 agent가 전지전능한 신이 아닌 이상 모든 state를 관찰할 수 없기 때문에, 만약 실제 환경에 적용할 것을 가정한다면 partially observable한 state, 다르게 말하면 observation으로 표기해야 하지만 우선 설명 부분에서는 모든 state를 관찰할 수 있는 것을 가정하고 시작한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;interaction.png&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brpr0M/btrQJiiM2Mq/ZXFlKK8lgxQySS5Y2YNUX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brpr0M/btrQJiiM2Mq/ZXFlKK8lgxQySS5Y2YNUX1/img.png&quot; data-alt=&quot;그림 1. policy와 environment간의 interaction&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brpr0M/btrQJiiM2Mq/ZXFlKK8lgxQySS5Y2YNUX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrpr0M%2FbtrQJiiM2Mq%2FZXFlKK8lgxQySS5Y2YNUX1%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;1286&quot; height=&quot;380&quot; data-filename=&quot;interaction.png&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 1. policy와 environment간의 interaction&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 policy \(\pi_{\theta}(a \vert s)\)에서 어떤 규칙에 따라서 action \(a\)가 나오게 되고, 이 정보는 실제 환경로 들어가게 된다. 이 환경은 보통 dynamics라고 하는 transition probability 특성을 가지게 되고, \(p(s' \vert s, a)\), 즉 현재 state \(s\)에서 특정 action \(a\)를 취했을 때 next state \(s'\)로 바뀔 확률을 가진다. 그러면 이 next state \(s'\)이 다시 신경망의 input으로 들어가는 일종의 feedback loop가 반복된다. 이런 과정을 \(T\)만큼 하게 된다면, 그만큼 에이전트는 그동안 자신이 어떤 state에서 어떤 action을 취했는지에 대한 샘플들을 얻게 될 것이다. 이를 sample trajectory \(\tau\)라고 하고, 여기에는 \(s_1, a_1, \dots, s_T, a_T\)를 포함한다. 그러면 이 trajectory에 대한 분포를 표현하면, 결국 이 분포도 agent의 policy를 구성하는 신경망의 영향을 받게 되므로 결국 \(p_{\theta}(\tau)\)가 될 것이고, 이를 아래와 같은 식으로 정리를 할 수 있게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ p_{\theta}(\tau) = p(s_1) \prod_{t=1}^T \pi_{\theta}(a_t \vert s_t) p( s_{t+1} \vert s_t, a_t) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우변의 내용은 복잡해보이지만 앞에서 언급한 환경의 transition probability에 의해 initial state \(s_1\)에 도출될 확률에 policy, 그리고 transition probablity에 의해서 next state로 바뀔 확률을 product sum 형식으로 표기한 것이다. 일단 강의에서는 model-free 방식, 즉 transition probability를 알지 못한다는 상황을 전제로 진행하고 있다. 사실 어떻게보면 실제 환경이 이렇게 transition probability를 모르는 환경이기도 하다. 이제 여기에서 우리가 원하는 것은 당연히 최적의 policy를 찾아야 할 것이고, 이 policy를 결정하는 optimal \(\theta\)인 \(\theta^*\)는 이렇게 trajectory를 통해 얻은 reward의 평균이 가장 큰 \(\theta\)라고 정의할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \theta^* = \arg \max_{\theta} \mathbb{E}_{\tau \sim p_{\theta}(\tau)}\big[ \sum_t r(s_t, a_t) \big] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 앞에서 \(T\)라는 notation을 사용했는데, 이는 \(T\)만큼을 하나의 sample trajectory라고 지정한 것이고, 보통 이 trajectory의 크기를 horizon라고 표현한다. 그래서 \(T\)라는 크기를 지정을 해줬기 때문에 이를 finite horizon이라고 하고, 위의 식에서 표현을 조금 다르게 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \theta^* = \arg \max_{\theta} \sum_{t=1}^T \mathbb{E}_{(s_t, a_t) \sim p_{\theta}(s_t, a_t)} [r(s_t, a_t)] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(뭐 어차피 총합의 평균을 구하는 것이나 평균의 총합을 구하는 것이나 동일한 형태이긴 하다. 이걸 수학적으로는 linearity of expectation이라고 정의하고는 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 이 trajectory의 크기가 정해지지 않고, 무한정한 상황인 infinite horizon case도 있다. 이때의 \(\theta^*\)는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \theta^* = \arg \max_{\theta} \mathbb{E}_{(s, a) \sim p_{\theta}(s, a)}[r(s, a)] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가 된다. 사실 infinite horizon이라고 하니 trajectory가 정의되지 않은 상태에서 어떻게 구할까 막막할 수 있겠지만 나중에 소개할 value function을 활용하면 finite horizon을 infinite 형태로 바꿔서 볼 수 있다. 일단 finite horizon case를 전제로 진행한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Evaluating the objective&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 앞의 식처럼 결국 \(\theta^*\)를 찾아야 하고, 이게 결국 policy를 구성하는 신경망의 weight이 되므로, 일반적으로 deep learning에 활용하는 gradient descent같은 기법을 사용해볼 수 있다. 그러면 objective (or loss function)을 정하게 될텐데, 이 \(\theta\)에 관한 식에서는 objective \(J(\theta)\)는 아래와 같이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ J(\theta) = \mathbb{E}_{\tau \sim p_{\theta}(\tau)}\big[ \sum_t r(s_t, a_t)\big] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 맨처음에 나왔던 \(p_{\theta}(\tau)\)에 들어있는 값인 \(p(s_1)\)이나 \(p( s_{t+1} \vert s_t, a_t) \) 는 사실 우리가 dynamics를 알고 있지 않는 한 구할 수가 없다. 그러면 이 값을 어떻게 구할 수 있을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 간단하게 추정할 수 있는 것은 그냥 지금까지 얻은 sample trajectory들의 평균 reward값으로 근사값을 구하는 것이다. 이렇게 sample trajectory를 쭉 펼쳐놓고 본다고 해서 이를 rollout이라고 표현하는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ J(\theta) = \mathbb{E}_{r \sim p_{\theta}(\tau)} \big[ \sum_t r(s_t, a_t) \big] \approx \frac{1}{N} \sum_i \sum_t r(s_{i, t}, a_{i, t}) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 위 식의 의미는 objective \(J(\theta)\)를 구할 때 \(N\)개만큼의 sample trajectory를 가지고,특정 time step \(t\)에서의 reward값을 모두 더한값의 평균을 구한다는 것이다. 이렇게 하면 총 reward값의 평균값에 대한 unbiased estimate를 얻을 수 있다. 물론 sample trajectory의 크기가 점점 커질수록 estimate값의 정확도는 높아지게 된다.&amp;nbsp; 간단하게 예를 들자면 아래의 그림을 생각해보면 된다. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;실제 상황에서 trajectory를 쌓다보면 좋은 trajectory, 나쁜 trajectory가 다 있을텐데, 결국 이 trajectory들의 평균을 구해서 이를 \(J(\theta)\) 에 대한 추정치로 삼겠다는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;trajectories.png&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EQwE5/btrQJPAp5bx/LUmNoQTFqQLGl7RCdhEkx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EQwE5/btrQJPAp5bx/LUmNoQTFqQLGl7RCdhEkx0/img.png&quot; data-alt=&quot;그림 2. Good trajectory, Bad trajectory&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EQwE5/btrQJPAp5bx/LUmNoQTFqQLGl7RCdhEkx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEQwE5%2FbtrQJPAp5bx%2FLUmNoQTFqQLGl7RCdhEkx0%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;423&quot; height=&quot;198&quot; data-filename=&quot;trajectories.png&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 2. Good trajectory, Bad trajectory&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Direct policy differentiation&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;그런데 결과적으로 이를 얼마나 정확하게 추정하냐가 목적이 아니라 이 값을 가지고 policy를 update하는게 목적이고, 앞에서 언급한 것처럼 gradient descent같은 방법을 사용하기 위해서는 결국 derivative를 구해야 한다. 일단 trajectory의 reward 총합 \( \sum_{t=1}^T r(s_t, a_t)\)를 \(r(\tau)\)라고 하고 \(J(\theta)\)를 정리한다. 참고로 지금의 notation은 discrete variable을 가정한 것인데, continuous variable을 가진 것으로도 확장시켜 볼 수 있다. 물론 continuous variable의 기대값을 구하는 방법은 그냥 확률값을 곱한 것을 쭉 누적시킨 것과 동일하기 때문에 discrete case에 있던 expectation term이 사라진다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ J(\theta) = \mathbb{E}_{\tau \sim p_{\theta}(\tau)}[r(\tau)] = \int p_{\theta}(\tau)r(\tau) d\tau $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;그러면 우리의 목적은 바로 \(J(\theta)\) 의 미분값인 \(\nabla_\theta J(\theta)\)를 구하는 것이고, 이는 아래와 같이 표현할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ \nabla_{\theta} J(\theta) = \int \nabla_{\theta} p_{\theta}(\tau)r(\tau)d\tau $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;사실 \(\nabla\)가 나오면서 저 값을 어떻게 계산할까 고민을 할 수 있겠지만 의외로 간단한 trick을 쓰면 모든 식에 대한 gradient를 계산하지 않아도 된다. RL Spinning Up 에서는 이 trick을 log-derivative trick이라고 표현했다. 쉽게 말해서 \(log\)의 미분특성을 사용하는 것인데, 아마 고등학교 수학을 까먹지 않은 사람이라면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ \nabla \log (x) = \frac{1}{x} $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;라는 특성을 기억할 것이다. 그러면 우리가 구해야 했던 \(\nabla_{\theta} p_{\theta}(\tau)\)도 원형이 \(\log\)였다고 가정을 해보면 아래와 같은 identity를 정의할 수 있게된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ p_{\theta}(\tau) \nabla_{\theta} \log p_{\theta}(\tau) = p_{\theta}(\tau) \frac{\nabla_{\theta}p_{\theta}(\tau)}{p_{\theta}(\tau)} $$&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이중 우변의 분모항이 위의 derivative term에 있는 값이고, 추가로 붙는 값들은 자세히 살펴보면 동일한 값임을 알 수 있다. 결국 \(\nabla_\theta J(\theta)\)는 다음과 같이 정의할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ \nabla_\theta J(\theta) = \int p_{\theta}(\tau) \nabla_{\theta} \log p_{\theta}(\tau)r(\tau)d\tau = \mathbb{E}_{\tau \sim p_{\theta}(\tau)}[ \nabla_{\theta} \log p_{\theta}(\tau) r(\tau)] $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;\(\log p_{\theta}(\tau)\) 의 \(p_{\theta}(\tau)\)는 사실 맨 처음에 정의했다시피&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ p_{\theta}(\tau) = p(s_1) \prod_{t=1}^T \pi_{\theta}(a_t \vert s_t) p(s_{t+1} \vert s_t, a_t) $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이고, 여기에 양변에 \(\log\)를 취하면 위의 식은 다음과 같이 각 term이 더해지는 형태로 바뀐다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ \log p_{\theta}(\tau) = \log p(s_1) + \sum_{t=1}^T \log \pi_{\theta}(a_t \vert s_t) + \log p(s_{t+1} \vert s_t, a_t) $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;그런데 여기에서 이제 원래의 목적대로 이 \(\log\)의 derivative를 취하면 생각보다 간단한 식이 도출된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ \nabla_{\theta} \big[ \log p(s_1) + \sum_{t=1}^T \log \pi_{\theta} (a_t \vert s_t) + \log p (s_{t+1} \vert s_t, a_t) \big] $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;역시 고등학교 때 미분 수업을 들었다면 partial derivative에 대한 내용을 알고 있을 것이고, 위의 식은 \(\theta\)에 대한 gradient를 구한 것이다. 이 말은 다르게 표현하면 \(\theta\)에 대한 식이 아니면 미분시 다 상수로 판단하고 0으로 만든다. 그런 논리를 펴면 위의 식중 첫번째 \(\log p(s_1)\)과 세번째 term인 \(\log p(s_{t+1} \vert s_t, a_t)\)이 0이 된다. 왜냐? \(\theta\)에 대한 식이 아니기 때문에.. 그러면 최종적으로 식이 아래와 같이 정리된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ \nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim p_{\theta}(\tau)} \Big[ \big( \sum_{t=1}^T \nabla_{\theta} \log \pi_{\theta} (a_t \vert s_t) \big) \big(\sum_{t=1}^T r(s_t, a_t) \big) \Big] $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이렇게 하니까 처음 전제로 두었던 환경의 trasition probability를 몰라서 어떻게 할 줄 몰랐던 부분을 실제로 policy가 수행되면서 쌓인 trajectory와&amp;nbsp; reward의 expectation만 가지고도 개선시킬 수 있다는 근거를 찾은 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Evaluating the policy gradient&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;잠깐 \(J(\theta\)를 표현하는 과정에서 rollout을 구하면서 추정하는 부분이 있었는데, 이렇게 앞에서 구한것을 여기에도 똑같이 대입해볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ \nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \big( \sum_{t=1}^T \nabla_{\theta} \log \pi_{\theta}(a_{i, t} \vert s_{i, t}) \big) \big( \sum_{t=1}^T r(s_{i, t}, a_{i, t})\big) $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;그러면 이제 이렇게 미분값을 취한 것을 바탕으로 신경망의 weight \(\theta\)를 update하면 된다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$$ \theta \leftarrow \theta + \alpha \nabla_{\theta} J(\theta) $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이 과정을 묘사한게 아래의 그림이 되겠다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;reinforce.png&quot; data-origin-width=&quot;413&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d409TF/btrQIuxkzVR/FcPVlKoJOFcism29Msxo5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d409TF/btrQIuxkzVR/FcPVlKoJOFcism29Msxo5k/img.png&quot; data-alt=&quot;그림 3. REINFORCE&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d409TF/btrQIuxkzVR/FcPVlKoJOFcism29Msxo5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd409TF%2FbtrQIuxkzVR%2FFcPVlKoJOFcism29Msxo5k%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;413&quot; height=&quot;288&quot; data-filename=&quot;reinforce.png&quot; data-origin-width=&quot;413&quot; data-origin-height=&quot;288&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 3. REINFORCE&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이것이 REINFORCE라는 간단한 policy gradient 알고리즘이고, 1992년 Williams가 &lt;a href=&quot;https://link.springer.com/article/10.1007/BF00992696&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Simple statistical gradient-following algorithms for connectionist reinforcement learning&lt;/a&gt; 라는 논문을 통해서 처음 소개했다. 참고로 REINFORCE 단어 자체는 &lt;b&gt;Re&lt;/b&gt;ward &lt;b&gt;I&lt;/b&gt;ncrement = &lt;b&gt;N&lt;/b&gt;onnegative &lt;b&gt;F&lt;/b&gt;actor * &lt;b&gt;O&lt;/b&gt;ffset &lt;b&gt;R&lt;/b&gt;einforcement * &lt;b&gt;C&lt;/b&gt;haracteristic &lt;b&gt;E&lt;/b&gt;ligibility 의 약자에서 파생되었다. 알고리즘으로 표현하면 다음과 같은 과정으로 진행된다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;\(\pi_{\theta}(a_t \vert s_t)\)를 수행해서 trajectory \(\tau^i\)를 샘플링한다.&lt;/li&gt;
&lt;li&gt;\(\nabla_{\theta} J(\theta) \approx \sum_i ( \sum_t \nabla_{\theta} \log \pi_{\theta} (a_t^i \vert s_t^i)) (\sum_t r(s_t^i, a_t^i)) \)&lt;/li&gt;
&lt;li&gt;\(\theta \leftarrow \theta + \alpha \nabla_{\theta} J(\theta) \)&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>Study/AI</category>
      <category>Policy Gradient</category>
      <category>REINFORCE</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1102</guid>
      <comments>https://talkingaboutme.tistory.com/entry/RL-CS285-Policy-Gradients#entry1102comment</comments>
      <pubDate>Wed, 9 Nov 2022 00:22:38 +0900</pubDate>
    </item>
    <item>
      <title>[RL][Review] Deterministic Policy Gradient Algorithm</title>
      <link>https://talkingaboutme.tistory.com/entry/RL-Review-Deterministic-Policy-Gradient-Algorithm</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(논문의 의도를 가져오되, 개인적인 의견이 담길 수도 있습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://proceedings.mlr.press/v32/silver14.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Deterministic Policy Gradient Algorithm&lt;/a&gt; (D.Silver et al, 2014)&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Abstract&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이 논문에서는 Continuous Action을 수행할 수 있는 Deterministic Policy Gradient (DPG)에 대해서 소개하고 있다. DPG는 (보통 Q value function이라고 알고 있는) action-value function(\(Q^{\pi}(s, a)\) )의 expected gradient 형태로 되어 있어, 일반적으로 알고 있는 (Stochastic) Policy Gradient 보다 data efficiency 측면에서 이점이 있다. 대신 Deterministic하기 때문에 exploration이 상대적으로 적어지게 되는데, 이를 극복하기 위해서 off-policy(target policy 와 behavior policy가 다른) actor-critic algorithm을 사용한다. 그래서 이를 이용해서 behavior policy는 exploration을 하게끔 하고, 여기서 deterministic한 target policy를 배우는게 목적이다. 결과적으로 DPG를 통해서 high-dimensional action space에서도 stochastic Policy Gradient보다 더 좋은 성능을 보여주는 것을 목적으로 하고 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;Value-based method는 discrete action에서만 동작할 수 있기 때문에 보통 Continuous Action space를 가지는 경우는 value function을 사용하는게 아닌 Policy 자체를 학습하는 Policy Gradient algorithm을 많이 사용하는데, 이 Policy Gradient의 핵심 아이디어는 \(\theta\)라고 하는 parameter에 의해서 결정되는 일종의 확률분포 \(\mathbb{P}[a|s;\theta]\)를 policy \(\pi_{\theta}(a|s)\)로 정의해서 특정 state \(s\)에서의 action \(a\)를 확률적으로(stochastic) 결정하자는 것이다. 쉽게 말해서 \(s\)에서의 action \(a\)가 딱 결정되는게 아니라 70%의 확률로 \(a_1\), 20%의 확률로 \(a_2\),.. 이렇게 하자는 것이다. 그래서 이 논문이 나오기 이전까지는 이런 stochastic policy를 sampling해서 더 좋은 total expected reward가 나오는 방향으로 policy parameter \(\theta\)를 조절하는 것이 Policy Gradient의 역할이었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;그래서 이 논문에서 보여주고자 한 것은 이런 stochastic policy가 아닌 deterministic policy로도 Policy Gradient 계산이 가능하다는 것과, 형태가 간단한 model-free 형태여서 이전 policy Gradient에서도 사용했던 action-value function의 gradient를 그대로 사용할 수 있다는 것이다. 더불어 deterministic policy도 결국은 policy에 대한 variance가 0인 stochastic policy gradient와 동일하다는 것을 증명하려고 했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;사실 Deterministic Policy Gradient와 Stochastic Policy Gradient의 차이를 높고 보자면, Policy Gradient 계산식에서 볼 수 있다. Stochastic Policy Gradient를 계산할 때는, 모든 State \(s\)와 Action \(a\)에 대한 확률분포를 바탕으로 계산해야 되기 때문에, 결국 수많은 데이터 기반으로 샘플링을 해야 되고, 계산될 때도 모든 state space와 action space를 고려해야 했다. 하지만 Deterministic policy의 경우는 state에 대한 action이 deterministic하기 때문에 action term을 고려할 필요가 없어진다. 결국 Policy Gradient를 계산할 때 action term이 줄게 되는 것이다. 대신 Stochastic Policy Gradient는 말 그대로 확률적이기 때문에 조금더 Unknown state에 대한 exploration이 가능하지만, Deterministic Policy Gradient는 그런 측면에서 exploration이 발생할 가능성이 낮게 된다. 그렇기 때문에 이를 극복하기 위해서 Abstract에서 소개한 바와 같이 Off-policy algorithm을 제시했다. Off-policy 기법을 쓰게 되면, environment에서 수행하는 학습하는 behavior policy \(\beta\)와 궁극적으로 학습해야 할 target policy \(\pi\)가 나뉘어지게 되는데, exploration을 적절하게 수행하기 위해서 behavior policy는 stochastic하게 구성하고, target policy는 deterministic하게 학습하게 함으로써 exploitation이 발생하도록 했다. 이를 위해서 differentiable function approximator를 사용했고, 이 approximator의 gradient에 따라 policy parameter \(\theta\)를 조절하게끔 되었다. 여기에 competible function approximation이란 개념을 적용해서 function approximation을 통한 결과가 policy gradient에 bias되는 현상을 막고자 했다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Background&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;보통 강화학습으로 문제를 해결하기 위해서는 해당 문제를 Markov Decision Process (MDP)로 모델링해야 되는데 이때 필요한 정보는 다음과 같다. (약간 변형이 된 형태이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \begin{align} \mathcal{S} &amp;amp;: \text{state space} \\&lt;br /&gt;&amp;nbsp;\mathcal{A} &amp;amp;: \text{action space} \\&lt;br /&gt;&amp;nbsp;p_1(s_1) &amp;amp;: \text{initial state distribution with density} \\&lt;br /&gt;&amp;nbsp;p(s_{t+1} | s_t, a_t) &amp;amp;: \text{stationary transition dynamics distribution with conditional density} \\&lt;br /&gt;&amp;nbsp;r : \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R} &amp;amp;: \text{reward function} \\&lt;br /&gt;\gamma &amp;amp;: \text{discount factor}&lt;br /&gt;&amp;nbsp;\end{align}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 참고로 위의 요소 중 transtion distribution (or transition probability)는 시작 시점 부터 \(T\)때까지 얻은 trajectory \(s_1, a_1, s_2, a_2, \dots, s_t, a_t\)에 대해 Markov Property(\(p(s_{t+1}|s_1, a_1, \dots, s_t, a_t) = p(s_{t+1}|s_t, a_t)\))를 만족해야 한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;그리고 우리가 궁극적으로 구해야 할 policy는 이 MDP내에서 action을 선택하는데 사용한다. 보통 이 policy는 stochastic하고 표현을 \(\pi_{\theta} : \mathcal{S} \rightarrow \mathcal{P}(\mathcal{A})\)라고 표기한다. 이 식에서 \(\mathcal{P}(\mathcal{A}) \)은 action space \(\mathcal{A}\)에서 action이 나올 확률 분포를 나타낸 것이고, policy parameter \(\theta\)는 n개의 parameter로 구성된 vector 형태로 되어 있다. 그래서 논문에 나오는 \(\pi_{\theta}(a_t|s_t)\)는 policy \(\pi_{\theta}\)가 수행될 때 \(a_t\)가 나타날 수 있는 조건부 확률 분포라고 보면 된다. 그러면 이 policy \(\pi_{\theta}\)를 앞에서 소개한 MDP상에서 수행하면서 일종의 trajectory \(h_{1:T} = s_1, a_1, r_1, \dots, s_T, a_T, r_T\)를 얻을 수 있다. (물론 trajectory의 차원은 \(\mathcal{S} \times \mathcal{A} \times \mathbb{R}\)이 될 것이다. 여기서 \(r_t^{\gamma}\) 은 time step \(t\)까지 얻은 total discounted reward이고, 아래와 같이 계산할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ r_t^{\gamma} = \sum_{k=t}^{\infty} \gamma^{k-t} r(s_k, a_k) \quad \text{where } 0 &amp;lt; \gamma &amp;lt; 1 $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 제시된 정보를 이용해서 각각의 value function를 다음과 같이 구할 수 있다.&lt;br /&gt;$$ V^{\pi}(s) = \mathbb{E}[r_1^{\gamma} | S_1 = s; \pi] \\ Q^{\pi}(s, a) = \mathbb{E}[r_1^{\gamma} | S_1 = s, A_1 = a; \pi] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;앞에서 구한 total discounted reward를 이용해서 performance objective function \(J(\pi) = \mathcal{E}[r_1^{\gamma}|pi]\)를 계산할 수 있는데, 보통 강화학습의 궁극적인 목표는 이 performance objective function이 최대치가 되게 하는 policy \(\pi\)를 찾는 것이다. (다르게 표현하자면 total discounted reward가 최대가 되는 policy를 찾는 것이다.)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;추가로 \(s'\)을 state \(s\)에서 앞에서 소개한 transition distribution \(p(s \rightarrow s', t, \pi)\)에 따라 \(t\)번 이동했을 때의 state라고 정의하고, 이에 따른 (discount factor가 반영된) state distribution을 \(\rho^{\pi}(s') := \int_{S} \sum_{t=1}^{\infty} \gamma^{t-1} p_1(s) p(s \rightarrow s', t, \pi) ds \)라고 하면, 이를 이용해서 앞의 performance objective를 기대값 형태로 아래와 같이 정리할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \begin{align} J(\pi_{\theta}) &amp;amp;= \int_S \rho^{\pi}(s) \int_A \pi_{\theta}(s, a) r(s, a) da ds \\&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;amp;= \mathbb{E}_{s \sim \rho^{\pi}} [r(s, a)] \end{align} $$&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Stochastic Policy Gradient Theorem&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;그래서 이 논문전까지 소개된 Stochastic Policy Gradient는 performance object의 gradient \(\nabla_{\theta} J(\pi_{\theta})\)를 계산해서 이에 따라 policy parameter \(\theta\)를 조절하는 algorithm을 결과로 도출한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \begin{align} \nabla_{\theta} J(\pi_{\theta}) &amp;amp;= \int_S \rho^{\pi}(s) \int_A \nabla_{\theta} \pi_{\theta}(a|s) Q^{\pi}(s, a) da ds \\ &amp;amp;= \mathbb{E}_{s \sim \rho^{\pi}, a \sim \pi_{\theta}} [\nabla_{\theta} \log \pi_{\theta}(a|s) Q^{\pi}(s,a)]&amp;nbsp; \end{align} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(위 식에 대한 증명을 확인하고 싶으면 이전의 &lt;a href=&quot;https://talkingaboutme.tistory.com/entry/RL-Policy-Gradient-Algorithms&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Policy Gradient Algorithm&lt;/a&gt; 포스트를 참고하면 좋을거 같다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;사실 위 식이 미분도 하고, 적분도 해서 복잡한 것처럼 보이지만, policy gradient 자체가 state distribution의 영향을 받지 않기 때문에 결과적으로 적분이 기대값 형태로 함축되어서 연산이 크게 줄어들기 때문에 실용적으로 활용할 수 있게 되었다. 문제는 이제 해당 식에 남아있는 action-value function \(Q^{\pi}(s,a)\)를 어떻게 estimate할 수 있냐인데, 가장 간단한 방법이 여러 번 같은 policy를 수행해서 이중 return \(r_{t}^{\gamma}\)를 sampling해서 이걸로 \(Q^{\pi}(s, a)\)를 계산하는 것이다. 이게 바로 &lt;b&gt;REINFORCE&lt;/b&gt;라고 불리는 monte-carlo policy gradient algorithm이다.&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Stochastic Actor-Critic Algorithm&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;b&gt;Actor-Critic Algorithm&lt;/b&gt;은 Policy Gradient 기반으로 되어 있어 크게 Actor와 Critic으로 이뤄져 있다. &lt;b&gt;Actor&lt;/b&gt;는 앞에서 언급했던 Performance Objective의 gradient인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \nabla_{\theta} J(\pi_{\theta}) = \mathbb{E}_{s \sim \rho^{\pi}, a \sim \pi_{\theta}}[ \nabla_{\theta} \log \pi_{\theta} (a|s) Q^{\pi}(s,a)] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 gradient ascent하도록(보통 gradient descent를 하면 loss를 minimize할 때 사용하던 거였지만, 여기서는 performance를 올리는데 사용해야 하기 때문에 gradient ascent를 사용한다.) \(\theta\)를 조절한다. 그런데 사실 위 식에서 우리는 policy \(\pi\)를 수행한 상태가 아니기 때문에, 이에 따른 진짜 \(Q^{\pi}(s,a)\)도 모르는 상태이다. 그래서 \(\pi\) 대신 임의의 \(w\)를 policy로 가져온 \(Q^{w}(s,a)\)를 action-value function으로 대신 사용한다. 물론 임의의 \(Q^{w}(s,a)\)를 바로 사용할 수 없기 때문에, TD Learning 같은 것을 써서&amp;nbsp;실제의 value function \(Q^{\pi}(s,a)\)와 어느정도 유사하게끔 해주는 역할을 수행하는 것이 &lt;b&gt;Critic&lt;/b&gt;이다. 결국 실제값이 아닌 어느정도 estimate된 value function \(Q^{w}(s,a)\)를 사용하기 때문에 최종으로 얻은 결과와 어느 정도 bias가 발생하게 된다. 그런데 만약 다음과 같은 조건을 만족하는 function approximator를 사용한다면, (논문에서는 이런 function approximator를 compatible function approximator라고 소개하고 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \begin{align} &amp;amp; \text{i)} \quad Q^{w}(s,a) = \nabla_{\theta} \log \pi_{\theta}(a|s)^T w \\&lt;br /&gt;&amp;nbsp;&amp;amp; \text{ii)} \quad \epsilon^2(w) = \mathbb{E}_{s \sim \rho^{\pi}, a \sim \pi_{\theta}} [ (Q^{w}(s,a) - Q^{\pi}(s,a))^2 ] \end{align} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(\(\text{ii)}\) 식은 잘 알겠지만, estimate된 값과 실제 값간의 오차를 mean squared error로 구한 것을 나타낸 것이고, 이 값이 최소화되는 \(w\)를 찾으면 궁극적으로 \(Q^{w}(s,a) \approx Q^{\pi}(s,a)\)가 될 것이다. 보통 이런 기법은 linear regression의 해를 찾는데 많이 활용된다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;최종적으로 bias가 없어진다. 이때 선택된 \(w\)를 통해서 구한 \(Q^{w}(s,a)\)로 performance objective를 다시 정리해보면 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ &amp;nbsp;\nabla_{\theta} J(\pi_{\theta}) = \mathbb{E}_{s \sim \rho^{\pi}, a \sim \pi_{\theta}}[ \nabla_{\theta} \log \pi_{\theta} (a|s) Q^{w}(s,a)] $$&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Off-Policy Actor-Critic&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;Off-policy로 policy Gradient를 estimate한다는 것은 학습시키는 policy \(\pi_{\theta}\)와 별개인 behavior policy \(\beta(a|s) \neq \pi_{\theta}(a|s)\)로부터 trajectory를 sampling한다는 것이다. 이렇게 off-policy를 따르게 되면, 앞에서 계속 언급했던 performance objective도 behavior policy의 state distribution ( \(\rho^{\beta}(s)\))을 평균적으로 구한 것을 바탕으로 계산한, target policy에 대한 value function을 사용한 것으로 조금 바뀌게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \begin{align} J_{\beta}(\pi_{\theta}) &amp;amp;= \int_S \rho^{\beta}(s) V^{\pi}(s) ds \\ &lt;br /&gt;&amp;amp;= \int_S \int_A \rho^{\beta}(s) \pi_{\theta}(a|s) Q^{\pi}(s, a) da ds&amp;nbsp; &amp;nbsp;\end{align} $$&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;물론 위 식을 미분하게 되면 말그대로 off-policy policy gradient를 구하게 되는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \begin{align} \nabla_{\theta} J_{\beta}(\pi_{\theta}) &amp;amp;\approx \int_S \int_A \rho^{\beta}(s) \nabla_{\theta} \pi_{\theta} (a|s) Q^{\pi}(s,a)da ds \\&amp;nbsp;&lt;br /&gt;&amp;amp;= \mathbb{E}_{s \sim \rho^{\beta}, a \sim \beta} \big[ \frac{\pi_{\theta}(a|s)}{\beta_{\theta}(a|s)} \nabla_{\theta} \log \pi_{\theta}(a|s) Q^{\pi}(s,a) \big] \end{align} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이렇게 근사를 하게 되면 기본적으로 \(Q^{\pi}(s,a)\) 는 \(\theta\)에 관한 식이 아니기 때문에, 위와 같이 gradient를 취하게 되면 해당 term인&amp;nbsp; \(\nabla_{\theta}Q^{\pi}(s,a)\)는 없어지게 된다. &lt;a href=&quot;https://arxiv.org/abs/1205.4839&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;Linear off-policy actor-critic&quot;&lt;/a&gt;(Degris et al, 2012)에서 이런 성향을 이용하면, policy gradient를 취할때 수행하는 gredient ascent에서 최소한 local optima에 도달할 수 있다고 표현을 하고 있다. 그래서 그 논문에서 소개한 Off-Policy Actor-Critic (OffPAC)에서는 따로 trajectory를 생성하기 위해서 behavior policy \(\beta(a|s)\)를 사용하고 있다. OffPAC에서 Critic은 behavior policy에서 구한 trajectory를 이용해서 실제 policy의 value function을 근사한 새로운 value function \(V^{v}(s) \approx V^{\pi}(s)\)를 구하고, Actor는 Critic과 마찬가지로 behavior policy에서 구한 trajectory를 이용해서 policy parameter \(\theta\)를 update한다. 이때 앞에서 구한 \(\nabla_{\theta}J_{\beta}(\pi_{\theta})\)를 활용해야 되는데, 우리가 off-policy를 활용하는 이상 \(Q^{\pi}(s,a)\)를 알 수 없다. 그렇기 때문에 보통 value function을 모를 때 이를 근사하는 방법인 TD Learning을 사용하고, 우리가 구해야 하는 \(Q^{\pi}(s,a)\) 대신 \(\delta_t = r_{t+1} + \gamma V^v(s_{t+1}) - V^v(s_t)\)를 이용하게 된다. 물론 target policy \(\pi\)와 behavior policy \(\beta\)간의 sampling distribution을 맞추기 위해서, Actor와 Critic 모두 Importance Sampling Ratio \(\frac{\pi_{\theta}(a|s)}{\beta_{\theta}(a|s)}\)를 적용해야 한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Action-Value Gradient&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;거의 모든 model-free RL algorithm은 Policy Evaluation과 Policy Improvement가 혼합되어 있는 &lt;a href=&quot;https://talkingaboutme.tistory.com/entry/RL-Flexibility-of-the-Policy-Iteration-Framework&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Generalized Policy Iteration&lt;/a&gt;(GPI)을 기반으로 되어 있다. Policy Evaluation은 Monte-Carlo Evaluation이나 TD Learning과 같이 action-value function \(Q^{\pi}(s,a)\)나 \(Q^{\mu}(s,a)\)를 추정하는 것을 말하고, Policy Improvement는 Policy Evaluation으로 추정한 value function을 기반으로 policy를 update하는 것을 말한다. 보통 이때는 greedy maximization (또는 soft maximization)이란 방법을 취하곤 한다. (\( \mu^{k+1}(s) = \arg \max_a Q^{\mu^k} (s,a) \))&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이 논문에서 다루고 있는 Continuous Action space로 범주를 넓혔을 때, 위와 같이 greedy하게 policy improve를 수행하면 매 step마다 \(\arg \max\)를 통해 maximization을 취해야 한다. 이 경우 만약 action space가 넓어지게 되면 그만큼 연산 측면에서 비효율적이 된다. 그래서 이런 maximization 방법 대신에 \(Q\)의 gradient의 방향으로 policy를 변화시키면 동일한 효과를 얻으면서 연산을 줄일 수 있게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \theta^{k+1} = \theta^k + \alpha \mathbb{E}_{s \sim \rho^{\mu^k}} [ \nabla_{\theta} Q^{\mu^k} (s, \mu_{\theta}(s))] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;조금더 자세히 말하자면, 매번 방문한 state \(s\)별로 policy parameter \(\theta^{k+1}\)를 value function \(\nabla_{\theta} Q^{\mu^k} (s, \mu_{\theta}(s)) \) 에 비례하게 update시키자는 것이다. 이때 방문한 state별로 policy improvement의 방향이 다를 수 있기 때문에 state distribution \(\rho^{\mu}(s)\)에 대해서 expectation을 취한 형태가 위의 식이다. 이 식에서 chain rule을 쓰면 action에 대해서 value function을 미분한 형태와 policy parameter에 대해서 policy를 미분한 형태로 쪼개서 구할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \theta_{k+1} = \theta_{k} + \alpha \mathbb{E}_{s \sim \rho^{\mu^k}} [ \nabla_{\theta} \mu_{\theta} (s) \nabla_{a} Q^{\mu^k}(s,a) \vert_{a=\mu_{\theta}(s)} ] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;참고로 \(\nabla_{\theta} \mu_{\theta}(s)\)은 &lt;a href=&quot;https://en.wikipedia.org/wiki/Jacobian_matrix_and_determinant&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Jacobian Matrix&lt;/a&gt;를 나타내는데, matrix의 각 column \(d\)는 policy parameter \(\theta\)가 적용된 policy \(\mu\)상에서 \(d\)번째 action을 말하는 것이다. 그런데 여기서 policy를 바꾸게 되면, 방문한 state \(s\)도 바뀌게 될 것이고, 이에 따라 state distribution \(\rho^\mu\)도 바뀌게 될 것이다. 그래서 어떻게 보면 위와 같이 구해서는 Policy Improvement를 할 수 없을 수도 있겠지만, 다음 부분에서 언급하다시피 일반적인 Stochastic Policy Gradient처럼 굳이 state distribution의 gradient를 계산할 필요가 없다. 대신 policy improve시 사용하는 항이 이전에 소개한 performance objective이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Deterministic Policy Gradient Theorem&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이 논문에서 소개된 Deterministic Policy을 정의하자면, n차원으로 구성된 parameter vector \(\theta \in \mathbb{R}^n\)에 의해서 값을 설정할 수 있는 policy \(\mu_{\theta} : \mathcal{S} \rightarrow \mathcal{A}\)를 말하고, 해당 policy의 좋고 나쁜 정도를 표현하는 performance objective function을 \(J(\mu_{\theta}) = \mathbb{E}[r_1^{\gamma}|\mu]\)를 정의할 수 있다. 굳이 해석하면, 정해진 policy \(\mu\)를 수행하면서 얻을 수 있는 (discounted factor \(\gamma\)가 반영된) reward의 총합에 대한 expectation이 되겠다. 여기에 대한 probability distribution은 \(p(s \rightarrow s', t, \mu)\)이고, (discounted) state distribution은 Stochastic Policy와 동일하게 \(\rho^{\mu}(s)\)로 정의해둔다. 사실 state distribution 자체가 말 그대로 특정 state가 어느 분포를 띄는지를 나타낸 값이므로,이를 이용해서 앞에서 언급한 performance objective를 표현하면, 하나의 expectation을 구하는 형식으로 바꿀 수 있게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \begin{align} J(\mu_{\theta}) &amp;amp;= \int_{S} \rho^{\mu}(s) r(s, \mu_{\theta}(s)) ds \\&lt;br /&gt;&amp;amp;= \mathbb{E}_{s \sim \rho^{\mu}}[r(s, \mu_{\theta}(s))]\end{align} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 문제는 위의 Deterministic Policy의 특성을 사용해서도 Policy Gradient Theorem을 만족시키냐 하는 것이다. 이 Policy Gradient Theorem이란 Sutton이 &quot;&lt;a href=&quot;https://papers.nips.cc/paper/1713-policy-gradient-methods-for-reinforcement-learning-with-function-approximation.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Policy Gradient Method for reinforcement learning with function approximation&lt;/a&gt;&quot; 이란 논문을 통해서 소개한 정리인데, 간단히 설명하자면 특정 policy를 수행한 상태에서 얻은 total expected reward에 대한 derivative는 reward 자체에다가 수행하고 있는 policy에 \(\log\)를 취한 것의 derivative를 곱한 결과와 같다는 것을 증명했다.(이전 포스트중 &lt;a href=&quot;https://talkingaboutme.tistory.com/entry/RL-Policy-Gradient-Algorithms?category=538748&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Policy Gradient Algorithm&lt;/a&gt;에서 이에 대한 증명을 소개했었다.) 그러면 다시 말해서 Determinstic Policy를 써도 굳이 reward 미분하지 않고도 policy에 대한 미분만 구할 수 있으면 Theorem이 성립한다는 것이 논문의 전제 조건이었고, 이는 Appendix에서 증명했다. 여기서 도출할 수 있는 Theorem 1은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 MDP가 Appendix A.1의 조건을 만족한다면, \(\nabla_{\theta}\mu_{\theta}(s)\)와 \(\nabla_{a} Q^{\mu}(s, a)\)는 존재하며, 아래와 같이 deterministic policy gradient도 존재하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \begin{align} J(\mu_{\theta}) &amp;amp;= \int_{S} \rho^{\mu}(s) \nabla_{\theta} \mu_{\theta}(s) \nabla_a Q^{\mu}(s, a) \vert_{a=\mu_{\theta}(s)} ds \\&lt;br /&gt;&amp;amp;= \mathbb{E}_{s \sim \rho^{\mu}}[\nabla_{\theta} \mu_{\theta}(s) \nabla_a Q^{\mu}(s, a) \vert_{a=\mu_{\theta}(s)}]\end{align} $$&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Limit of the Stochastic Policy Gradient&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞에서 소개한 두번째 식을 살펴보면 deterministic policy gradient에는 그렇게 stochastic한 성향이 보이지 않아보이는데, 사실 다음의 경우를 통해서 deterministic policy gradient도 특별한(제한된 것이긴 하지만) 경우의 stochastic policy gradient임을 보일 수 있다. 먼저 기존의 \(\pi_{\mu_{\theta}, \sigma}\)로 정의되는 stochastic policy를 variance parameter \(\sigma = 0\)을 가지는 deterministic policy \(\mu_{\theta} : \mathcal{S} \rightarrow \mathcal{A}\) 로 생각해보면 결국 \(\pi_{\mu_{\theta}, 0} \equiv \mu_{\theta} \)라는 것을 알 수 있다. 그러면 \(\sigma \rightarrow 0\)일 때 stochastic policy gradient가 deterministic policy gradient로 수렴하는 것만 보여주면 된다. (이에 대한 내용도 Appendix C에 나와있다.) 여기서 도출할 수 있는 Theorem 2는 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \lim_{\sigma \downarrow 0} \nabla_{\theta} J(\pi_{\mu_{\theta}, \sigma}) = \nabla_{\theta} J(\mu_{\theta}) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 식에서 왼쪽 항은 일반적인 stochastic policy gradient의 gradient를 나타낸 것이고, 오른쪽항은 deterministic policy gradient 의 gradient를 나타낸 것이다. 이 식을 통해서 policy gradient의 범주라고 할 수 있는 function approximation, natural gradient, actor-critic, episodic/batch 기법들이 모두 deterministic policy gradient에도 적용할 수 있다는 것을 증명하기 때문이 중요한 부분이 되겠다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Deterministic Actor-Critic Algorithms&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞의 theorem을 통해서 이제 deterministic policy gradient를 on-policy와 off-policy actor-critic 기법에 적용해볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;On-policy Deterministic Actor-Critic&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 deterministic policy에 따라서 action을 취하게 되면 탐색이 잘 적절하게 이뤄지지 않아서 sub optimal solution에 빠지는 경우가 많다. 이런 내용을 배제하고 우선 deterministic policy를 학습하고 이에 따라 행동하는 on-policy deterministic actor-critic 알고리즘에 대해서 소개하고자 한다. 물론 이 알고리즘의 목표는 교육용이긴 하지만 어쩌면 environment상에 충분한 noise가 있는 상황에서도 deterministic policy를 사용해도 충분한 탐색이 이뤄지는지를 확인하는데 도움이 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stochastic actor-critic처럼 deterministic actor-critic도 actor와 critic으로 나눠지는데 critic은 action-value function을 추정할 것이고, actor는 이 function의 gradient가 증가하는 방향으로 action을 취하게 될 것이다. 엄밀하게 말하자면 actor는 앞의 theorem 1을 통해서 소개된 바와 같이 stochastic gradient ascent를 사용해서 deterministic policy \( \mu_{\theta}(s)\)의 계수 \(\theta\)를 조절하게 될 것이다. 그리고 실제 action value function \(Q^{\mu}(s, a)\) 대신 미분가능한 action value function \(Q^{w}(s, a)\)를 사용할 것이고, 그러면 critic에서는 적절한 policy evaluation 알고리즘을 사용해서 \(Q^{w}(s, a) \approx Q^{\mu}(s, a)\)를 추정하게 된다. 예를 들어서 이번 deterministic actor-critic에서는 critic은 SARSA update를 통해서 action-value function을 추정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \delta_t = r_t + \gamma Q^{w} (s_{t+1}, a_{t+1}) - Q^w(s_t, a_t) \\&lt;br /&gt;w_{t+1} = w_t + \alpha_w \delta_t \nabla_w Q^w (s_t, a_t) \\&lt;br /&gt;\theta_{t+1} = \theta_t + \alpha_\theta \nabla_\theta \mu_{\theta}(s_t) \nabla_a Q^w (s_t, a_t) \vert_{a = \mu_\theta(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;</description>
      <category>Study/AI</category>
      <category>Actor-Critic</category>
      <category>Deterministic Policy Gradient</category>
      <category>DPG</category>
      <category>Policy Gradient</category>
      <category>REINFORCE</category>
      <category>Stochastic Policy Gradient</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1021</guid>
      <comments>https://talkingaboutme.tistory.com/entry/RL-Review-Deterministic-Policy-Gradient-Algorithm#entry1021comment</comments>
      <pubDate>Thu, 3 Nov 2022 18:22:19 +0900</pubDate>
    </item>
    <item>
      <title>[Book] 전문가를 위한 C</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Extreme-C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B6135642963&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;전문가를 위한 C&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1667134290137&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;전문가를 위한 C&quot; data-og-description=&quot;실제 애플리케이션 개발과 유지 보수에 필요한 C의 기초 개념과 활용법, 고급 기능까지 살펴보는 C 중고급서. C와 유닉스의 역사부터 객체지향, 커널, 스레드, 프로세스, 다른 언어와 통합하는 법&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B6135642963&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B6135642963&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dunjw7/hyQnSD3TFB/Omrn5loW4iyvVlZKBRW6fK/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/V2DDn/hyQpsRi5N1/hjyeFRU8R5LhFzI7JU9bB1/img.jpg?width=600&amp;amp;height=763&amp;amp;face=0_0_600_763,https://scrap.kakaocdn.net/dn/BJnKB/hyQnPOba45/k66biKQsd893YgmfBiIlE1/img.jpg?width=600&amp;amp;height=450&amp;amp;face=42_149_277_406&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B6135642963&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B6135642963&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dunjw7/hyQnSD3TFB/Omrn5loW4iyvVlZKBRW6fK/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/V2DDn/hyQpsRi5N1/hjyeFRU8R5LhFzI7JU9bB1/img.jpg?width=600&amp;amp;height=763&amp;amp;face=0_0_600_763,https://scrap.kakaocdn.net/dn/BJnKB/hyQnPOba45/k66biKQsd893YgmfBiIlE1/img.jpg?width=600&amp;amp;height=450&amp;amp;face=42_149_277_406');&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;전문가를 위한 C&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;실제 애플리케이션 개발과 유지 보수에 필요한 C의 기초 개념과 활용법, 고급 기능까지 살펴보는 C 중고급서. C와 유닉스의 역사부터 객체지향, 커널, 스레드, 프로세스, 다른 언어와 통합하는 법&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항상 프로그래밍 언어와 관련된 책을 리뷰할 때면 TIOBE Index를 인용해오곤 하는데, 현재 시점에서 C는 Python에 이어 2위에 위치해있다. C는 1972년 Dennis Ritchie가 만들었고, 올해는 언어가 태어난지 만 50년이 되는 시점이다. 물론 최근에는 뭔가 다방면으로 활용할 수 있는 언어들이 인기를 얻고 많이 사용되고 있지만, 그 중에서도 시스템 어플리케이션이나 low level programming에서는 여전히 C가 많이 사용되고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 이 이야기를 꺼낸 이유는 이 책을 단순히 C와 관련된 언어책이라고 처음 생각했기 때문에 그런것이다. 그래서 막연한 생각에 여타 시중에 나와있는 C 책들과 같이 C에 대한 문법, 알고리즘 구현, 조금 고급진 내용을 다룬다면 C로 만든 프로그래밍 구현 정도가 담긴 책이라고 생각했었다. 그런데 책에 담겨 있는 내용은 그렇지 않다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20221030_213811.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y4MTI/btrPTlf9AYq/oTzgQfeziaq4Licsnc0jwK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y4MTI/btrPTlf9AYq/oTzgQfeziaq4Licsnc0jwK/img.jpg&quot; data-alt=&quot;책이 상당히 두껍다..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y4MTI/btrPTlf9AYq/oTzgQfeziaq4Licsnc0jwK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy4MTI%2FbtrPTlf9AYq%2FoTzgQfeziaq4Licsnc0jwK%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;2268&quot; height=&quot;4032&quot; data-filename=&quot;20221030_213811.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;4032&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;이 책은 간단하게 말하자면 C 에 대해서 알수 있는 책이라기 보다는 C를 주로 활용하는 시스템 프로그래밍 책이라고 표현하는게 맞다. 그래서 책 서두부터 간단한 문법에 대한 내용이 아니라, C로 만든 프로젝트의 빌드방법부터 소개한다. 아마 다른 C로 구현된 오픈소스 코드를 보면 헤더나 소스에 막 복잡하게 정의되어 있는 전처리기 같은 것은 활용 방법과 빌드와 관련된 내용이 처음부터 소개되는 것이다. 이밖에도 C로 이뤄지는 Object Oriented Programming이나 Concurrency, IPC 같은 기초 책에서는 찾기 어려운 주제들로 내용이 구성되고 있다. 서두에서도 저자는 C를 활용한 다양한 프로젝트에서 겪은 극한의 주제에 대한 경험적 지식을 실용적으로 접근할 수 있다는 의미로 &quot;Extreme C&quot;라는 책이름을 지었다고 소개되어 있고, 사실 어떻게 보면 이책을 통해서 C로 할 수 있는 모든 내용이 거진 담겨져 있다. Unix를 다루는 부분에서는 조금더 실무적으로 시스템 프로그래밍을 어떻게 하는지에 대한 내용이 잘 담겨져 있다. 개인 여담을 좀 소개하자면, 이전에 블로그에 Xenomai 라고 하는 Custom kernel을 설치하는 방법에 대해서 소개했었는데, 그걸보고 연락주신 분이 안된다고 해서, 나도 처음부터 리눅스 커널을 빌드하고, 간단하게 모듈들을 수정하는 작업을 거쳤었다. 그런데 이게 참 C를 다룬지 오래되서 그런지 빌드부터 코드 수정이 익숙치가 않았다. 가령 어떤 부분이 잘못되었는지는 감이 오는데, 이 걸 수정하려니까 조금 막막했던 경험이 있었고, 사실 이 책을 통해서 조금이나 기름칠을 하려고 했었다. 물론 이 책을 통해서라면 조금 수월했을&amp;nbsp; 일들이다. 이밖에도 후반부에는 다른 언어와의 통합성에 대한 내용도 다루고 있어서 C를 쓰는 사람들이 다른 프로그래밍 언어로 구현된 내용과 어떤식으로 통신을 할 수 있는지에 대한 내용도 소개되었다. 진짜 이런 내용은 어떻게 보면 stackoverflow나 이런데서 검색해야 찾을 수 있는 내용인데, 진짜 광범위한 내용을 다루고 있다는 느낌을 받았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 책의 분량 자체가 일반적인 책의 분량의 두배 수준이기 때문에(대략 900페이지?) 책의 전체 내용을 꼼꼼히 파악하는데까지는 시간이 많이 필요할 것으로 생각한다. 그리고 C로 다룰 수 있는 또다른 극한의 주제를 모두 다루기에는 이 책의 분량가지고도 부족할 것이다. 하지만, 적어도 주어진 분량내에서 이 책은 앞에서 언급한 고급 주제에 대한 내용과 예시들을 충분히 다루고 있으며, 이 내용만으로도 일일이 내가 경험했던 것처럼&amp;nbsp; stackoverflow를 찾아해메야 했던 사람들에게는 좋은 가이드를 제공하지 않을까 생각한다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Hobby/Book</category>
      <category>concurrency</category>
      <category>Extreme C</category>
      <category>IPC</category>
      <category>OOP</category>
      <category>Packt</category>
      <category>전문가를 위한 C</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1101</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Extreme-C#entry1101comment</comments>
      <pubDate>Sun, 30 Oct 2022 22:41:05 +0900</pubDate>
    </item>
    <item>
      <title>[Book] Pandas in Action</title>
      <link>https://talkingaboutme.tistory.com/entry/Book-Pandas-in-Action</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 포스트에서 소개하고 있는 &quot;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B4172751734&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;판다스 인 액션&lt;/a&gt;&quot; 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)&lt;/p&gt;
&lt;figure id=&quot;og_1664720694920&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;판다스 인 액션&quot; data-og-description=&quot;대표적인 파이썬 데이터 분석 라이브러리, 판다스의 기본 자료구조 개념부터 데이터 분석법까지 차근차근 배울 수 있는 도서입니다. 초급자부터 상급자까지 모두 만족시킬 수 있는 구성과 내용&quot; data-og-host=&quot;hanbit.co.kr&quot; data-og-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B4172751734&quot; data-og-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B4172751734&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ffJd4/hyP0AhQ1rg/tswV7ZLNdauqeIu2hchzk0/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/MnQbL/hyPZbqtNiA/vASTibHJ6J8XKxLKsGRqJ0/img.jpg?width=800&amp;amp;height=1066&amp;amp;face=0_0_800_1066&quot;&gt;&lt;a href=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B4172751734&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hanbit.co.kr/store/books/look.php?p_code=B4172751734&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ffJd4/hyP0AhQ1rg/tswV7ZLNdauqeIu2hchzk0/img.jpg?width=202&amp;amp;height=260&amp;amp;face=0_0_202_260,https://scrap.kakaocdn.net/dn/MnQbL/hyPZbqtNiA/vASTibHJ6J8XKxLKsGRqJ0/img.jpg?width=800&amp;amp;height=1066&amp;amp;face=0_0_800_1066');&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;hanbit.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 회사에서 하고 있는 일은 생활가전에 인공지능 기술을 넣는 방법에 대해 고민하는 것이다. 이에 대한 결과가 사용자 편의를 가지고 오던, 제어 효율성을 높여서 에너지를 절감할 수 있게 한다던지 이런 방향으로 연구하는 일을 주로 하고 있다. 그런데 가끔 내 직무가 무엇인가에 대해서 진지하게 고민할 때가 있다. 공식적인 직무는 Software Engineer이긴한데, 하는 일을 생각해보면 AI Engineer라고 해야되나 싶기도 하고, 그런데 일을 하다보면 뭔가 구현하는 것보다 현상에 대한 분석을 많이 하는 경우도 많아 Data Scientist라고 해야 할 것 같다는 생각이 든다.뭐 물론 이런 분석이나 기술 구현 모두 Software를 구현하면서 일을 하니까 포괄적인 직무는 Software Engineer라고 해야 되는게 맞는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 생각보다 생활가전일을 하다보니 항상 접하게 되는게 생활가전에 부착되어 있는 센서에서 뽑히는 데이터를 가지고 하는 일들이 많다. 보통 이런 가전의 경우는 이런 내재된 dynamics를 모사할 수 있는 시뮬레이터같은게 없기 때문에 일반적으로는 어떤 동작을 취했을때 나오는 센서 데이터를 바탕으로 유추하는 방향으로 진행하는 편이 많다. 그래서 물론 인공지능 기술 개발도 중요한 일이긴 하지만, 이와 비교했을 때 센서 데이터를 &quot;잘&quot; 분석하는 것도 하나의 R&amp;amp;R인 측면도 있다. 그래서 인공지능기술개발을 할때는 Tensorflow, 뭔가 논문 예제를 다룰때는 PyTorch를 하다가도, 이 때 필요한 데이터의 전처리나 시각화 분석할 때는 NumPy나 Pandas를 많이 사용하곤 한다. 그 중에서도 pandas와 NumPy는 뭔가 기술이 아닌 분석의 성격이 있긴 하지만, 그래도 뭔가 현상을 이해하고 시각화하는데 필수적인 툴이라고 생각한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20221002_230358.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Quqps/btrNzEoBXk5/KQ7nxdyTbBXcbeQzfAlhJk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Quqps/btrNzEoBXk5/KQ7nxdyTbBXcbeQzfAlhJk/img.jpg&quot; data-alt=&quot;판다스 인 액션&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Quqps/btrNzEoBXk5/KQ7nxdyTbBXcbeQzfAlhJk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQuqps%2FbtrNzEoBXk5%2FKQ7nxdyTbBXcbeQzfAlhJk%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;2268&quot; height=&quot;4032&quot; data-filename=&quot;20221002_230358.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;4032&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;이번에 소개할 책은 이 Pandas에 대해서 디테일하게 소개한 책이다. 그런데 나만 그렇게 느끼는 것인지는 모르겠지만 pandas를 많이 써보다보면, 이 툴은 뭔가 코딩 테스트와 비슷한 느낌을 준다. 가령 내가 어떤 지원자에게 raw data 하나 던져주고, 이 data의 특정 조건에 해당하는 값들의 평균과 표준편차, 그리고 최빈값을 dataframe 형태로 뽑아보라고 문제를 낸다면, 그때부터 열심히 고민하게 될 것이다. 그 특정 조건에 맞는 값들은 어떻게 찾을 것이며, Index는 어떻게 잡고, group은 어떻게 지을 것인지에 대해서 방법을 찾고 구현을 할 수 있을 것이다. 혹은 data를 string화해서 정규표현식을 통해서 원하는 요소만 찾게도 해 볼 수 있는 것이고... 구현할 수 있는 방법은 정말 다양하고, 이런 기능들을 pandas에서 구현할 수 있다. 정말 데이터 분석에 필수적인 툴이라고 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책은 크게 1부 기본기 다지기와 2부 응용하기 두 부로 나눠져 있으며, 1부에서는 pandas에서 활용되는 자료형과 기본적인 매커니즘에 대해서 소개되어 있다면, 2부에서는 실제 데이터셋을 예제로 하여, pandas에서 제공하는 api를 자유자제로 활용할 수 있는 방법에 대해서 소개한다. 나같은 경우는 pandas를 현업에서 자주 활용하기도 해서 1부보다는 2부 내용을 위주로 주로 살펴보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 사실 pandas에서 제일 다루기 어려운 개념 중 하나가 MultiIndex와 GroupBy 개념인데, 이 책에서는 각각 7장과 9장에서 해당 내용을 설명하고 있고, 기본 개념에 대한 자세한 설명이 책에서 제공되고 있어서 좋았다. 특히 좋았던 부분은 각 장의 후반부마다 &quot;코딩 챌린지&quot;라는 이름으로 문제를 제공하고 이에 대한 풀이법을 이어서 설명하는데, 마치 강의 영상을 보는 것처럼 푸는 방법과 이에 대한 결과를 보여주는 전개방식이 실제 문제를 여기에 대입해서 이해하는 도움이 될 것이라고 생각한다. 개인적으로 외서 시리즈 중 좋아하는 형태의 하나가 Manning 출판사의 &quot;In Action&quot; 시리즈인데, 이 책도 독자가 접할 수 있는 실제 문제와 책의 전개 방향을 일치시키려는 노력에 있어 읽기에 좋지 않을까 하는 생각을 해본다. 기타 장 부분도 실제 접할 수 있을법한 예시를 바탕으로 다뤄진 내용도 좋았던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 이 책의 부록은 pandas와 numpy에 대한 기본지식과 fake data 생성을 위한 faker 사용법, 그리고 정규표현식에 대한 내용이 포함되어 있는데, 분량이 무려 책의 1/5 정도이다. 기본지식이 부족하다고 느낄 수 있어도 부록에서 이를 커버할 만큼 방대한 분량들이 담겨져 있는 것이다.(한편으로는 너무 기초내용을 소개하는데 많은 분량이 들어간건 아닌가 싶기도 하고...)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 그렇긴 하지만 pandas는 뭔가 api를 암기하고 사용법을 빠삭하게 알기보다는 공식 문서에서 제공하는 것을 읽고, 제공되는 예시를 내 문제에 대입하는 방법을 많이 활용하는데, 어떻게 보면 이 책은 그런 공식 문서를 책으로 도출한 일종의 가이드 북이라고 보면 좋을 것 같다. 때문에 뭔가 데이터 분석을 위해서 머리를 싸맬 문제가 있다면 이 책의 관련 장을 일고 한번 읽어보는 것도 좋은 문제 해결 방법이 되지 않을까 싶다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책의 예제 코드는 jupyter notebook형태로 제공되며, &lt;a href=&quot;https://github.com/paskhaver/pandas-in-action&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github&lt;/a&gt;은 아래와 같다.&lt;/p&gt;
&lt;figure id=&quot;og_1664724136982&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - paskhaver/pandas-in-action: Complete source code (datasets and Jupyter Notebooks) for Pandas In Action&quot; data-og-description=&quot;Complete source code (datasets and Jupyter Notebooks) for Pandas In Action - GitHub - paskhaver/pandas-in-action: Complete source code (datasets and Jupyter Notebooks) for Pandas In Action&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/paskhaver/pandas-in-action&quot; data-og-url=&quot;https://github.com/paskhaver/pandas-in-action&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/biVZvv/hyPY9MWjoJ/32dz3rIk3knzI5bUo62nNk/img.png?width=1200&amp;amp;height=600&amp;amp;face=984_116_1036_174&quot;&gt;&lt;a href=&quot;https://github.com/paskhaver/pandas-in-action&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/paskhaver/pandas-in-action&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/biVZvv/hyPY9MWjoJ/32dz3rIk3knzI5bUo62nNk/img.png?width=1200&amp;amp;height=600&amp;amp;face=984_116_1036_174');&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;GitHub - paskhaver/pandas-in-action: Complete source code (datasets and Jupyter Notebooks) for Pandas In Action&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Complete source code (datasets and Jupyter Notebooks) for Pandas In Action - GitHub - paskhaver/pandas-in-action: Complete source code (datasets and Jupyter Notebooks) for Pandas In Action&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;</description>
      <category>Hobby/Book</category>
      <category>pandas</category>
      <category>pandas in action</category>
      <category>판다스인액션</category>
      <category>한빛미디어</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1100</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Book-Pandas-in-Action#entry1100comment</comments>
      <pubDate>Mon, 3 Oct 2022 00:22:27 +0900</pubDate>
    </item>
    <item>
      <title>[Daily] 논문 회고</title>
      <link>https://talkingaboutme.tistory.com/entry/Daily-paper-retrospective</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;submission.png&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;28&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVAxjM/btrNjTMrrDZ/sQ6B0MjKjJqzUjK3AOkOYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVAxjM/btrNjTMrrDZ/sQ6B0MjKjJqzUjK3AOkOYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVAxjM/btrNjTMrrDZ/sQ6B0MjKjJqzUjK3AOkOYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVAxjM%2FbtrNjTMrrDZ%2FsQ6B0MjKjJqzUjK3AOkOYK%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;281&quot; height=&quot;28&quot; data-filename=&quot;submission.png&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;28&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;요 근래 몇달동안 논문을 써보는데 집중했었다. 석사과정때도 경험했던 일이긴 했지만, 마지막 제출까지 피를 말리는 경험을 하곤했다. 막 살펴보면 오타도 있고, page limit에 걸려서 있던 그림도 반으로 잘라서 single column에 넣고... 제일 힘들었던 것은 latex내에서 그림을 넣었는데, 원하는대로 이쁘게 그림이 달리지 않는 것은 두고두고 짜증이 났던 부분이다. 그렇게 힘든 과정을 거치고 막상 내고 나니까 뭐랄까... 원래 이런 고생을 해야 글이 나오는건가 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아 참고로 이번에 제출한 학회는 ICRA라고 하는 로봇 관련 학회이고, 블로그에도 간혹 올렸던 Offline RL과 관련된 논문을 회사 사람들이랑 같이 썼다. 개인적으로는 논문 주제가 (내가 찾아본 바로는) 거의 세계 최초의 사례이기 때문에 만약 된다면 개인적으로나 회사 측면에서나 큰 홍보가 될 듯 한데, 글쎄 accept이 되냐 마냐는 reviewer가 결정하는 일이니까 내년 1월까지는 물떠다놓고 기도해야할 판이다. (어차피 reviewer comment에 대응하는 것도 피말리겠지만...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참 논문을 쓰면서도 우여곡절도 많았다. 아무래도 최근에 다뤄지는 주제를 토대로 논문을 쓰다보니 related work에 넣을 논문들간의 관계를 찾는 것도 힘들었고, 나도 기술적으로 잘 아는 분야가 아니라서 직접 실험하면서 이론이 잘 적용되는지를 증명하느라 실험하는데 시간을 많이 썼다. 거기에 작년에 태어난 아들 육아하면서, 논문을 준비하다보니 밤에만 집중해서 내용을 살펴볼 수도 있고, 무엇보다 와이프한테 육아를 전담시킨것같아서 미안한 마음이 계속 들었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 논문을 쓰면서 느꼈던 부분은 진짜 논문을 위한 연구와 실제 회사에서 하는 연구의 방향이 다르다는 점이다. 뭔가 논문을 위한 연구는 기존에 없던 새로운 기술이나 알고리즘, 그리고 그걸 나타낼 수 있는 novelty가 많이 드러나야 했었고, 회사에서 하는 연구는 기존에 잘되던 기술을 조금씩 튜닝하면서 성능을 향상시키는데 초점을 맞춘다는 점이 달랐다. 물론 나와 같이 일하는 사람들도 후자의 방향으로 일을 해왔었고, 뭔가 남들이 하지 않는 새로운 일을 하면서도 &quot;과연 우리가 하는 일이 남들에게도 인정받을 수 있는 접근 방식인걸까?&quot; 하는 의문을 항상 가지고 있었다. 그런 와중에 이번에 새로오신 연구소장님이 그런 방향을 잘 정의하고 옆에서 가이드를 해주신 덕분에 논문 제출까지 마무리할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 제출이 대단한게 아니라 이게 accept이 되어야 대단한건데, 그래도 끝까지 열심히 하고 제출까지 마무리할 수 있어서 개인적으로는 보람도 느끼고 좋았다. 무엇보다 좋은 사람들을 동료로 두고 함께 일했었기에 가능한 일이었고, 이 사람들이 없었다면 절대 마무리되지 않았을 일들이다. 역시 좋은 사람을 동료로 두고, 충분한 서포트만 있다면 안되는 것은 없다고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 올해의 중요한 일은 이렇게 마무리되었지만, 이게 발판이 되어서 또 새로운 주제, 새로운 논문, 새로운 시도를 할 수 있는 기회가 생겼으면 좋겠다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Me</category>
      <category>ICRA</category>
      <category>IEEE</category>
      <category>논문</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1099</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Daily-paper-retrospective#entry1099comment</comments>
      <pubDate>Wed, 28 Sep 2022 23:33:27 +0900</pubDate>
    </item>
    <item>
      <title>[Daily] readITzine 5호</title>
      <link>https://talkingaboutme.tistory.com/entry/Daily-readITzine-fifth</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220817_001727.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dK4Etx/btrJSNvbQFl/c5TZEPARedgzJktDuKboAK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dK4Etx/btrJSNvbQFl/c5TZEPARedgzJktDuKboAK/img.jpg&quot; data-alt=&quot;리드잇 5호&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dK4Etx/btrJSNvbQFl/c5TZEPARedgzJktDuKboAK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdK4Etx%2FbtrJSNvbQFl%2Fc5TZEPARedgzJktDuKboAK%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220817_001727.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;리드잇 5호&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기회가 닿아서 교보문고에서 출간하는 리드잇 5호에 글을 짧게 기고했다. 그냥 회사에서 하는 일이나 간단하게 공부하는 방법에 대해서 투고했었는데, 이렇게 책으로도 나오는 걸 보니 신기했다.&lt;/p&gt;</description>
      <category>Me</category>
      <category>readit</category>
      <category>개발</category>
      <category>개발자</category>
      <category>교보문고</category>
      <category>리드잇</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1098</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Daily-readITzine-fifth#entry1098comment</comments>
      <pubDate>Wed, 17 Aug 2022 00:22:16 +0900</pubDate>
    </item>
    <item>
      <title>[Thing] Lattepanda 3 Delta 864</title>
      <link>https://talkingaboutme.tistory.com/entry/Thing-Lattepanda-3-Delta-864</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;작년 말에 Kickstarter에서 funding했던 Lattepanda delta 3가 드디어 왔다.&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;참고로 나는 Lattepanda 초창기 모델부터 계속 funding을 했었는데, 뭔가 저렴한 가격에 계속 성능 개선을 하려는 시도가 보이는 것 같아서 계속 투자를 했던 것 같다. 사실 동 가격에 비슷한 성능을 내는 노트북은 300~400불 정도 하는데 비해 이 정도 single board computer가 200불 내외로 구입할 수 있는 것은 좋은 기회가 아닐까 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 국내에는 icbanq를 통해서 8월 중순부터 정식으로 유통될 예정인듯하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 unboxing 사진 공유한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220802_220956.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/APTT7/btrIVgdRt3N/Ey4gQ6qKTekUdsDFLWOr80/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/APTT7/btrIVgdRt3N/Ey4gQ6qKTekUdsDFLWOr80/img.jpg&quot; data-alt=&quot;Lattepanda 3 delta와 titan case, 그리고 선물&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/APTT7/btrIVgdRt3N/Ey4gQ6qKTekUdsDFLWOr80/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAPTT7%2FbtrIVgdRt3N%2FEy4gQ6qKTekUdsDFLWOr80%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220802_220956.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Lattepanda 3 delta와 titan case, 그리고 선물&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220803_225104.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czPbeV/btrIMCKe7Gx/v6GjhpSwS3Q5OJgLkH0cjk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czPbeV/btrIMCKe7Gx/v6GjhpSwS3Q5OJgLkH0cjk/img.jpg&quot; data-alt=&quot;이전에 펀딩했던 alpha와의 비교샷&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czPbeV/btrIMCKe7Gx/v6GjhpSwS3Q5OJgLkH0cjk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczPbeV%2FbtrIMCKe7Gx%2Fv6GjhpSwS3Q5OJgLkH0cjk%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220803_225104.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이전에 펀딩했던 alpha와의 비교샷&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220803_225119.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdXIT9/btrIPYeqhmp/6kKZ7QZ2cyQv9NakUA0aKk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdXIT9/btrIPYeqhmp/6kKZ7QZ2cyQv9NakUA0aKk/img.jpg&quot; data-alt=&quot;alpha와의 spec 차이&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdXIT9/btrIPYeqhmp/6kKZ7QZ2cyQv9NakUA0aKk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdXIT9%2FbtrIPYeqhmp%2F6kKZ7QZ2cyQv9NakUA0aKk%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220803_225119.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;alpha와의 spec 차이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220803_225515.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcanlb/btrINvqwgbP/zjXvH67EYN3gQpB6N2A0ik/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcanlb/btrINvqwgbP/zjXvH67EYN3gQpB6N2A0ik/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcanlb/btrINvqwgbP/zjXvH67EYN3gQpB6N2A0ik/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcanlb%2FbtrINvqwgbP%2FzjXvH67EYN3gQpB6N2A0ik%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220803_225515.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220803_225521.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byAUaB/btrINu6f9mh/wO6k0mIUfPhI8wb6wlUl11/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byAUaB/btrINu6f9mh/wO6k0mIUfPhI8wb6wlUl11/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byAUaB/btrINu6f9mh/wO6k0mIUfPhI8wb6wlUl11/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyAUaB%2FbtrINu6f9mh%2FwO6k0mIUfPhI8wb6wlUl11%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220803_225521.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220803_225646.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdMQsH/btrIVhw3VRk/kPXFjsGJkXxGdCZtKdpESK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdMQsH/btrIVhw3VRk/kPXFjsGJkXxGdCZtKdpESK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdMQsH/btrIVhw3VRk/kPXFjsGJkXxGdCZtKdpESK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdMQsH%2FbtrIVhw3VRk%2FkPXFjsGJkXxGdCZtKdpESK%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220803_225646.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220803_225659.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHNhiv/btrIMBdtTIT/z8RvZhc8RWavKbWCSK9Ey1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHNhiv/btrIMBdtTIT/z8RvZhc8RWavKbWCSK9Ey1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHNhiv/btrIMBdtTIT/z8RvZhc8RWavKbWCSK9Ey1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHNhiv%2FbtrIMBdtTIT%2Fz8RvZhc8RWavKbWCSK9Ey1%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220803_225659.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220803_225737.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bemAZ4/btrIOvjwBdB/ZsDSwiMK3nWUQg6cdP6qK1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bemAZ4/btrIOvjwBdB/ZsDSwiMK3nWUQg6cdP6qK1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bemAZ4/btrIOvjwBdB/ZsDSwiMK3nWUQg6cdP6qK1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbemAZ4%2FbtrIOvjwBdB%2FZsDSwiMK3nWUQg6cdP6qK1%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220803_225737.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220803_230220.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBUHLh/btrITpWEnWX/s9nOoVhAP5EaWaV2B2MKVk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBUHLh/btrITpWEnWX/s9nOoVhAP5EaWaV2B2MKVk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBUHLh/btrITpWEnWX/s9nOoVhAP5EaWaV2B2MKVk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBUHLh%2FbtrITpWEnWX%2Fs9nOoVhAP5EaWaV2B2MKVk%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220803_230220.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220803_230230.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/31lV9/btrIT8f30U5/4artOthcAc903acH9iGqc1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/31lV9/btrIT8f30U5/4artOthcAc903acH9iGqc1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/31lV9/btrIT8f30U5/4artOthcAc903acH9iGqc1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F31lV9%2FbtrIT8f30U5%2F4artOthcAc903acH9iGqc1%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220803_230230.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220803_234733.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSwxpN/btrIOvw1VUd/apyH3wJk4SHJBkL3wkkgu1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSwxpN/btrIOvw1VUd/apyH3wJk4SHJBkL3wkkgu1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSwxpN/btrIOvw1VUd/apyH3wJk4SHJBkL3wkkgu1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSwxpN%2FbtrIOvw1VUd%2FapyH3wJk4SHJBkL3wkkgu1%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;3024&quot; height=&quot;3024&quot; data-filename=&quot;20220803_234733.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 board의 외형 자체는 microSD 슬롯의 위치가 바뀐것 빼고는 큰 차이가 없고, 성능상의 차이는 존재한다. 아마 이전 모델이 delta 432 모델일텐데, 이번 버전 3가 나오면서 864 모델로 출시되었다. 즉 온보드 램이 8기가에 emmc 64gb가 기본 모델이 된 것이다. 거기에 10nm 셀레론 계열인 n5105 가 달렸다. 기존에는 n4100이었는데, 성능 개선은 대략 2배정도?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 계획은 여기에 미니 모니터를 하나 붙이 steamOS를 설치해서 간이 보드게임판을 만드는 것인데, 생각보다 IO가 다양하게 붙어있어서 다른것도 해볼까 생각중이다. 가령 M.2 B-key도 달려있어서 (만약 가능하다면) coral accelerator를 하나 달아서 edge tpu를 활용해보는 것도 좋을거 같다. 일단 고민중..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 추후에 동작하는 것도 공유해볼까 한다.&lt;/p&gt;</description>
      <category>Things</category>
      <category>Kickstarter</category>
      <category>lattenpanda</category>
      <category>lattepanda 3 delta</category>
      <category>라떼판다</category>
      <author>생각많은 소심남</author>
      <guid isPermaLink="true">https://talkingaboutme.tistory.com/1097</guid>
      <comments>https://talkingaboutme.tistory.com/entry/Thing-Lattepanda-3-Delta-864#entry1097comment</comments>
      <pubDate>Thu, 4 Aug 2022 00:07:13 +0900</pubDate>
    </item>
  </channel>
</rss>