전체 글 25

[Markov Decision Process - 4] Bellman Equation

MathJax = { tex: {inlineMath: [['$', '$'], ['\\(', '\\)']]} };State value and Q-valueState value($v_\pi(s)$): State value function는 해당 State에서 end of episode(종료 조건 만족) 까지 가는데 얻어지는 Expected return이다. $$ v_\pi(s) = \mathbb{E}[G_t|S_t = s] $$$$ v_\pi(s) = \mathbb{E}[R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+2} + ... + \gamma^{T-t-1}R_\gamma|S_t = s] $$ Q-value(=Action value)($q_\pi(s, a)$)..

AI/RL 2024.04.22

[Markov Decision Process - 3] MDP의 종류

Finite vs Infinite Finite Markov decision process : State / Action / Rewards 가 모두 유한하다. ex : 5x5 미로 - 위치 state가 25개 / 4개(상하좌우)의 action / single reward Infinite Markov decision process : State / Action / Rewards 중 하나라도 무한하다면 Infinite Markove decision process 이다. 연속적 값의 경우 가능한 값이 무한하다. ex : 자동차 운전 - state : 자동차의 위치, 속력(infinite) Episodic vs Continuing Episodic Markov decision process : 특정 조건에서 종료되..

AI/RL 2024.04.22

[Markov Decision Process - 2] MDP에 대한 이해와 특성

MathJax = { tex: {inlineMath: [['$', '$'], ['\\(', '\\)']]} };Discrete-time stochastic control processMarkov dicision process는 Disccrete-time stochastic control process이다.Discrete-time: 유한한 간격으로 시간이 움직임ex: 1초, 2초, 3초 …Stochastic: 미래의 State는 Action에 부분적으로만 의존한다. 이는 모든 행동이 미래 상태를 완전히 결정하지 않는다는 것을 의미한다. 미래의 상태는 현재 State와 Action에 의해 결정되는 확률적 결과에 의존한다. 즉, 동일한 State에서 동일한 Action을 취하더라도 다른..

AI/RL 2024.04.22

[Markov Decision Process - 1] 용어 정리

MathJax = { tex: {inlineMath: [['$', '$'], ['\\(', '\\)']]} };ElementsMDP 뿐만 아니라 control task라는 분야에 사용되는 elements이다.State($S_t$)Task environment가 어떤 상황에 놓여있는지 설명하는 모든 관련된 정보이다.ex: 체스 (체스판의 어떤 말의 위치 / 남은 시간)Action($A_t$): Agent가 Task 도중 수행하는 행동이다.ex: 체스 (각 말의 이동): Action은 Task의 State에 기반하여 선택된다.이는 Agent가 State를 관찰하여 State의 특성에 기반하여 Action을 수행한다는 뜻이다.Reward($R_t$): Agent에게 deci..

AI/RL 2024.04.22

[디자인 패턴] 팩토리 패턴

팩토리 패턴(Factory Pattern) 객체의 생성을 추상화하여 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴 장점 상위 클래스와 하위 클래스가 분리되기 때문에 의존성이 낮으며 상위 클래스에서는 인스턴스 생성 방식에 대해 알 필요가 없기 때문에 더 많은 유연성을 가짐 -> 하위 클래스의 인스턴스 생성 방식을 바꿔도 상위 클래스는 코드를 수정할 필요가 없음(알 필요 없음) 구현 예시 package DesignPattern; //Super Class인 Coffee abstract class Coffee { public abstract int getPrice(); @Override public String toStri..

CS/Design Pattern 2022.08.11

[디자인 패턴] 싱글톤 패턴

디자인 패턴 React.js, Spring과 같은 라이브러리나 프레임 워크의 기본이 되며, 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 '규약' 형태로 만들어 놓은 것 싱글톤 패턴 (Singleton Pattern) 객체의 인스턴스가 오직 1개만 생성되는 패턴 보통 데이터베이스 연결 모듈에 많이 사용 왜 싱글톤 패턴을 사용할까? (장점) 1. 인스턴스 생성의 비용(메모리, 속도) 절감 고정된 메모리 영역을 사용하기 때문에 메모리 절감 (하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문) 이미 생성된 인스턴스를 활용하기 때문에 속도 절감 2. 데이터 공유에 용이 하나의 인스턴스를 다른 모듈들이 공유하며 사용함 ex) 웹에 ..

CS/Design Pattern 2022.08.11

[DS] Recursion(재귀)

Recursion(재귀) 자기 자신을 호출하는 함수 문제를 더 작은 문제로 나누어 코드를 간결하게 만들어줌 Breaking Condition이 반드시 있어야 함 (중요) Recursion은 호출 될 때 마다 메소드의 복사본이 메모리에 만들어 진다. 그리고 메소드가 종료될 때 메소드의 복사본들은 삭제됨 Sorting, Search 등의 문제들이 Recursion으로 간단하게 해결 될 수 있음 상황에 따라 Iteration이 좋을지 Recursion이 좋을지 잘 판단하여야함 Recursion의 간단한 예시 public class countDown { public static void main(String[] args) { countDown(3); //출력 결과 : 3 2 1 } public static vo..

CS/Data Structure 2022.07.13

[DS] Stack

Stack 한 쪽에서만 자료를 넣고 빼는 LIFO(Last in First Out) 자료구조 Array 와 달리 i번째 자료에 O(1)(상수시간)으로 접근 할 수 없음 하지만 데이터 추가와 삭제는 O(1)(상수시간)으로 수행 할 수 있음 Array 처럼 원소들을 하나씩 shift해줄 필요없음 스택을 활용하는 것이 좋은 구현인 경우 재귀(Recursion) 알고리즘 웹 브라우저의 방문 기록 (뒤로가기) 실행 취소(undo) 역순 문자열 후위 표기법(연산자가 문자뒤에 오는 표기법) 계산 수식의 괄호 검사 Stack의 Operation (ADT) public interface ADT_Stack { public boolean push (T newEntry); //새로운 요소 넣음 public T pop (); ..

CS/Data Structure 2022.07.08

[DS] Time Complexity (시간 복잡도)

Time Complexity (시간 복잡도) Time Complexity(시간 복잡도)란 알고리즘의 효율성을 판단하기 위한 지표로서, 프로그램이 수행되는데 걸리는 절대적인 시간이 아닌 알고리즘이 수행되는데 사용되는 연산들이 몇 번 이루어지는지 나타낸 상대적 지표이 cf) 알고리즘을 평가하는 지표는 시간 효율성을 나타내는 시간 복잡도와 메모리 효율성을 나타내는 공간 복잡도가 있다. 시간 복잡도 자체가 자료구조는 아니지만 제가 공부한 자료구조 책에서 시간 복잡도를 다루고 있었습니다. 자료구조를 선택할 때 시간 복잡도가 중요한 고려사항이 되기때문에 책에서 다룬 것 같습니다. Big-O Notation 시간복잡도와 공간복잡도를 표현하는 표기법 중 가장 많이 사용되는 표기법 cf) 시간복잡도를 표현하는 표기법에는..

CS/Data Structure 2022.07.07

[DS] Array List, Linked List

ArrayList 가장 기본적인 자료구조이며, 논리적 저장 순서와 물리적 저장 순서가 동일한 자료구조 따라서 index로 해당 element에 빠르게 접근이 가능 장점 찾고자하는 대상의 index를 알고있으면 O(1)의 매우 빠른 속도로 접근이 가능 단점 List의 Capacity를 늘릴경우 더 큰 Capacity의 새로운 List에 기존 element들을 모두 복사해야 함 java에서는 가변길이의 ArrayList가 이미 구현이 되어있지만, ArrayList를 직접 구현을 할 경우 가변 길이는 상황에 맞는 적절한 방법을 사용하여야함 ex) Default capacity와 number of entries가 같아 질 경우 Default capacity의 2배의 길이로 capacity를 늘림 삭제 또는 삽입..

CS/Data Structure 2022.07.06