전체 글 186

[USACO Silver] 1차원 누적 합

아래 내용은 미국 정보 올림피아드인 USACO의 알고리즘 문제 학습 가이드인 usaco.guide를 참고하여 작성되었습니다 Introduction to Prefix SumsComputing range sum queries in constant time over a fixed 1D array.usaco.guide 시작 전에 이 문제를 풀어보고 오자.난이도: Very Easy Library Checker judge.yosupo.jp 길이가 N인 다음 값을 계산하기 원하는 1차원 정수 배열이 있다고 가정해보자.우리는 여기서 서로 다른 Q개의 쿼리를 (a,b)으로 보낼 것이다.그때의 (a, b)는아래 식을 만족한다.간단한 예시를 위해, N을 6으로 두고 문제를 풀어보자.인덱스 i123456arr[i]164253..

PS/USACO Silver 2025.09.06

MountainCar - 단순 DQN으로 풀기

https://gymnasium.farama.org/environments/classic_control/mountain_car/ Gymnasium DocumentationA standard API for reinforcement learning and a diverse set of reference environments (formerly Gym)gymnasium.farama.org 요구사항 정의Mountain Car MDP는 사인곡선의 바닥에 확률적으로 배치된 자동차로 구성된 결정론적 MDP이다.가능한 동작은 자동차에 양방향으로 적용할 수 있는 가속뿐이다. 이 MDP의 목표는 오른쪽 언덕 꼭대기의 목표 상태에 도달하기 위해 자동차를 전략적으로 가속하는 것이다.Mountain Car Continuous ..

2025년 9월 1주차 회고

지금 할 수 있으면 해라.지금 할 수 없으면 하지마라.지금 해야하면 해라.이번주에 한 것밑바닥부터 시작하는 딥러닝 - 강화학습조모친상 이번주에 하지 못한 것강화학습으로 OpenAI Gym 환경 직접 훈련시켜보기커피 원두 종류 및 맛 분석(블렌딩 or 싱글오리진)쿠팡 다음주에 할 수 있는 것강화학습으로 OpenAI Gym 환경 직접 훈련시켜보기핀잇 기능 요구사항 도출 & 백엔드 설계다음주에 할 수 없는 것단단한 강화학습 독서PoEAA 독서&블로그 글 작성코틀린 코루틴 학습쿠팡커피 원두 종류 및 맛 분석(블렌딩 or 싱글오리진) 다음주에 해야하는 것USACO Gold 번역 및 문제풀이RabbitMQ Java/Spring AMQP 클라이언트 학습카카오 공채 내용 살펴보기항상 무언가를 수행하기체계적인 상태를 ..

Pytorch GPU 사용 방법

아무 생각 없이 import torch 를 수행하면서 pip install torch를 실행시켰는데,이를 수행하니 파이토치가 GPU를 사용할 수 없었다. 추가적인 정보를 확인해보니, 전용 pytorch를 설치해줘야 GPU 사용이 가능했다.먼저 해당 링크에 접속해준다. Get StartedSet up PyTorch easily with local installation or supported cloud platforms.pytorch.org 해당 링크에서 자신의 컴퓨터와 cuda 설치 정보와 맞는 pytorch를 찾아, 해당 Run this Command를 쉘에서 실행시켜준다.cuda의 경우 최신 버전이 출시되더라도, pytorch는 그 버전을 stable로 지원하기까지 좀 시간이 걸린다.물론 Nightl..

진정한 어른

나는 똑똑해 보이는 일을 하고 싶었다.이는 선풍기 모터 제작 공장에서 모터의 전압만 측정하는 일을 시작한 뒤로 항상 염원하던 일이었다.아마 미래에 대한 불안과, 높은 연봉에 대한 갈망이 이런 것들을 원하게 했을지도 모른다.나라면 "똑똑해 보이는", "화이트 칼라" 일을 할 수 있을 것 같았다. 예전엔 멍청이 취급을 받을 때 나 자신에게 화나고 분노만 가득했고,"이곳을 탈출하자"와 같은 열등감과 분노만 가득했다. 따라서 "현실과 타협하지 않는 불굴의 의지"만 있다면, 뭐든지 할 수 있을 것 같았다. 하지만 현실은 녹록치 않은 것 같다.당장 나를 필요로 하는 사람을 뿌리칠 수 있는가?나의 목표를 위해 주변 사람들에게 폐를 끼칠 수 있는가?근래에 발생한 여러 일로 위와 같은 질문을 내면에서 수시로 받았고, 그..

개인적 공간 2025.09.04

키트루다(펨브롤리주맙)의 CIS 방광암 치료 사용

용어에 대한 설명은 해당 링크를 참고해주시기 바랍니다. 방광암과 CIS, 그리고 그 치료꾸준히 갱신될 예정입니다.잘못된 정보가 있다면 바로잡아주시길 바랍니다.방광의 구조점막층 (urothelium, 상피층)소변과 직접 맞닿아 있는 표피(상피). 여기서 암이 가장 먼저 발생한다.점막하층dev.go-gradually.me 소개2020년 1월 8일, 미국 식품의약국(FDA)은 유두종 유무와 관계없이 상피내암(CIS)을 동반한, BCG에 반응하지 않는 고위험 비근육 침습성 방광암(NMIBC) 환자를 치료하기 위해 펨브롤리주맙(키트루다)을 승인했다.국내 식품의약품안전청에서도 2024년 7월 25일에 키트루다를 전이성 방광암과 CIS의 치료제로 사용하는걸 허가했으며, 이는 30년만에 등장한 새로운 CIS의 항암 ..

[PoEAA] 서비스 계층의 역할

우리는 백엔드 개발을 배울 때, 단순히 '3-Layer 아키텍처를 써라.' 라는 이야기를 듣고, 컨트롤러-서비스-리포지토리를 작성하지만,무작정 XxxService 계층을 도입하면서 정작 서비스 계층에 어떠한 로직을 넣어야 하는지에 대한 고민에는 당황하기 십상이다. 이 서비스 계층의 등장 배경에 대해 완전히 이해할 때, 어떠한 로직을 서비스 계층에 넣고, 어떠한 로직을 도메인 엔티티에 넣을지 이해할 수 있을 것이다.'도메인' 이란?domain = 정의역소프트웨어 공학에서 '도메인'은 해결하고자 하는 문제의 영역을 의미하며, 특정 비즈니스 영역을 구현하게 되었을 때, 그 영역에만 존재하는 지식과 논리를 의미한다.예시로는 다음과 같은 것들이 있다.결제 도메인계정 도메인물류 도메인도메인 모델과 트랜잭션 스크립트..

[강화학습] 강화학습에 신경망 더하기

본 글은 강화학습과 신경망에 대한 기초적인 지식(벨만 방정식, Q-Learning, 퍼셉트론, FNN, CNN, RNN, etc.)이 있다고 가정하고 작성되었습니다.또한, 본 글은 DQN/정책 정사법과 관련된 내용을을 다루지는 않으니 주의해주시기 바랍니다.신경망을 위한 전처리신경망에서 '범주형 데이터'를 다룰 때에는 원-핫 벡터로 변화나는 것이 일반적이다.범주형 데이터: 범주로 묶을 수 있는 것. 혈액형이나 옷 사이즈 등원-핫 벡터: 한 개의 원소만 1이고 나머지는 모두 0인 벡터예를 들자면, 혈액형 A/B/AB/O 를 각각 (1,0,0,0)/(0,1,0,0)/(0,0,1,0)/(0,0,0,1)로 치환하는 것이다.그럼 아래와 같은 문제는 어떻게 원-핫 벡터로 바꿀 수 있을까?3x4 크기의 셀을 각각 범주..

[강화학습] 에이전트 구현 방법 - 분포 모델과 샘플 모델

에이전트 구현 방법에는 크게 '분포 모델'과 '샘플 모델'이 있다.분포 모델분포 모델은 확률 분포를 명시적으로 유지하는 모델이다.그래서 '무작위로 행동하는 에이전트'를 분포 모델로 구현한다면, 다음처럼 구현할 수 있다.이와 같이 각 상태에서의 행동 확률 분포를 self.pi 변수에 유지한다.그리고 실제 행동을 할 때는 이 확률 분포를 토대로 샘플링한다. 이것이 에이전트를 분포 모델로 구현하는 방법이며, 이처럼 확률 분포를 명시적으로 유지한다는 점이 분포 모델의 특징이다.샘플 모델샘플 모델은 '샘플링이 가능하다' 라는 조건만 충족하면 되는 모델이다.확률 분포를 유지할 필요가 없기 때문에 분포 모델보다 간단히 구현할 수 있다.확률 분포 없이 단순히 네 가지 행동 중 하나를 무작위로 선택하도록 구현했다. 이건..

[강화학습] 시간차 학습, SARSA, Q-Learning

시작하기 전에, 간단하게 강화학습에서의 몬테 카를로와 DP의 특징에 대해 짚고 넘어가겠다.DP다이나믹 프로그래밍의 점화식을 통한 증분 계산을 활용한다.장점따라서 에피소드 진행 중 평가와 개선을 번갈아가며 최적 정책을 얻을 수 있다.이 과정에서 반복되는 계산을 하나로 합쳐 진행하는 최적화(가치 반복법) 또한 가능하다.단점환경 모델(상태 전이 확률과 보상 함수)이 확실하게 알려져 있어야 계산이 가능하다.계산량에 대한 부하가 심하다.몬테 카를로실제 시나리오를 돌려보면서 환경을 추론한다. (비정상 Multi-Armed Bandit 문제)장점환경 모델이 확실하지 않더라도 평가/개선이 가능하다.단점몬테 카를로의 특성 상, 하나의 에피소드가 끝나야 평가 후 개선이 가능하다.일회성 과제에서만 사용이 가능하고, 지속적 ..

[강화학습] 강화학습에서 최적 정책을 찾는 방법

최적 정책은 '평가'와 '개선'을 번갈아 반복하여 얻는다.'평가' 단계에서는 정책을 평가하여 가치 함수를 얻는다.그리고 '개선' 단계에서는 가치 함수를 탐욕화하여 정책을 개선한다.이 두 과정을 번갈아 반복함으로써 최적 정책(과 최적 가치 함수)에 점점 다가갈 수 있다. 신경망에 비유하자면, 강화학습의 '평가'는 손실 함수 역할이고, 강화학습의 '개선'은 경사 하강법이 수행하는 역할이다. 예를 들어 몬테 카를로 방법으로 강화학습을 수행한다고 해보자.pi라는 정책이 있다면, 몬테 카를로 법을 이용해 V_pi를 얻을 수 있다.그다음은 개선 단계이다. 개선 단계에서는 탐욕화를 수행하며, 다음 수식으로 표현할 수 있다.계산 단계에서는 가치 함수의 값을 최대로 만드는 행동을 선택한다.이를 탐욕화라고 한다. Q 함..

[강화학습] Off-Policy, On-Policy, 중요도 샘플링

입실론-그리디 정책은 탐색과 활용을 적절히 활용하기 위한 기법이다. 하지만 그 결과는 '완벽한 최적 정책'이 아니다.왜냐하면 '탐색'의 과정을 거쳐야 하고, 그 과정이 비효율이 되기 때문이다. 여기서 '활용'만 하고 싶다는 욕심이 생길 수 있다.몬테 카를로 법을 이용해, 완벽한 최적 정책을 학습하는 방법을 알아보자.On-Policy스스로 쌓은 경험을 토대로 자신의 정책을 개선하는 방식이다.밴디트 문제에서 구현한 입실론 그리디 정책에선 '탐색' 과정이 필수로 들어가왔다.Off-Policy자신과 다른 환경에서 얻은 경험을 토대로 자신의 정책을 개선하는 방식이다.만약, 평가와 개선의 대상인 정책과, 실제 행동을 선택하는 행동 정책을 구분하면 어떻게 될까?이렇게 하면, 실제 행동을 선택하는 'Target pol..

[강화학습] 벨만 방정식

이번 내용은 지난 장에서 다루지 못했던 "확률적 MDP"의 수식 전개이다.벨만-포드 알고리즘과 다이나믹 프로그래밍을 만든 수학자 벨만의 또다른 업적, 벨만 방정식에 대해 알아보자.벨만 방정식은 MDP에서 성립하는 가장 중요한 방정식이며, 많은 강화 학습 알고리즘에 중요한 기초를 제공한다.사실 순수한 벨만 방정식의 경우, 실용적인 문제에서는 계산량이 너무 많아져서 적용하기 쉽지 않다.하지만 선형 회귀/로지스틱 회귀에서 딥러닝이 발전했듯이,벨만 방정식의 도출 과정이 강화학습의 기초(즉, 새로운 기법의 적용 가능성 탐색/연구를 위한 기초)가 되기 때문에, 정확히 인지하고 넘어가는 것이 중요하다.참고로, 좀 어렵다...기호가 이것저것 많이 등장해서 읽는데 시간이 좀 걸릴 것이다.익숙해지는 수밖에 없으니, 반복해..

[PoEAA] 성능 관련 용어

아키텍처의 결정에는 성능과 관련된 것이 많다.일반적으로 성능의 경우, 먼저 시스템을 실행 가능한 상태로 만들고, 성능을 측정한 후, 측정 데이터를 바탕으로 체계적인 절차를 이용한다.그런데 일부 아키텍처 결정은 나중에 최적화를 통해 해결하기 어려운 성능상의 영향을 미치는 경우가 있다.그렇다고 성능 상의 결정 방식을 글로 표현하기는 매우 어려운데, 모든 상황과 환경에 따라 그 결정의 옳고 그름이 완전히 달라질 수 있기 때문이다.하지만 적어도 용어를 정리해두면, 성능과 관련된 논의를 시작할 수는 있다.따라서 아래 용어들의 정의를 살펴보며, 각각이 어떤 의미를 갖는지 알아보자.응답 시간(response time)응답성(responsiveness)대기 시간(latency)처리량(throughput)성능(perfo..

[PoEAA] 백엔드 개발자의 역할 - 소프트웨어 아키텍처와 엔터프라이즈 애플리케이션의 의미

결국 백엔드 개발자는 소프트웨어 아키텍처를 이해하고, 도메인 로직을 코드로 설계해야 한다.여기에 있어 소프트웨어 아키텍처의 의미와 엔터프라이즈 애플리케이션의 정의는 백엔드 개발자가 해야하는 일을 명확히 정의하는 아주 중요한 주제라고 할 수 있다.따라서 이에 대한 정의를 먼저 해두자.아키텍처아키텍처는 아주 많은 사람들이 정의하려고 하지만 의견이 분분한 용어다.하지만 그 안에서 몇 가지 공통적인 정의가 있다.시스템을 구성 요소로 나누는 최상위 수준의 분해이다.번복하기 어려운 결정이다.아키텍처는 한 가지 방법으로는 설명할 수 없다.하나의 시스템 안에도 여러 아키텍처가 있을 뿐 아니라, 아키텍처적으로 무엇이 중요한지에 대한 관점도 시스템의 수명 기간 중 달라질 수 있다.랄프 존슨의 견해에서도 아키텍처에 대한 흥..

[강화학습] 마르코프 결정 과정(MDP)

벤디트 문제에서는 에이전트가 어떤 행동을 취하든 다음에 도전할 문제의 설정은 바뀌지 않았다.그런데 세상의 대부분의 문제는 에이전트의 행동에 따라 상황이 시시각각 변한다. 지금부터 변화하는 상태에 따른 최선의 결정을 돕는 도구, 마르코프 결정 과정에 대해 알아보자.강화 학습은 분명 스스로 정책을 학습하는 도구이지만, 이와 같이 해석적으로 문제의 해를 증명하는 과정 또한 중요하다.결국 문제를 잘게 쪼개 해석적으로 문제를 풀고, 이를 통해 큰 문제의 논리적 완결성을 증명해야 하기 때문이다.이번 장은 아래와 같은 순서로 진행할 것이다.먼저, MDP에서 쓰이는 용어들을 수식으로 정리할 것이다.그 다음, MDP의 목표를 정의한다.마지막으로, 간단한 MDP 문제를 풀며 목표를 달성해본다.마르코프 결정 과정(MDP)이..