본문 바로가기
반응형

프로그래밍23

강화학습과 능동진동제어의 결합 강화학습은 최적제어 (optimal control)와 동일한 목표를 갖고 있다. 둘의 목표는 "주어진 문제에서 최적의 답을 찾는 것"이다. 그럼에도 이 둘을 구분짓는 것은 "제어하려는 대상의 모델을 모르고도 제어가 가능하냐"인 것 같다. 물론 최적제어 내에서도 적응제어 (adaptive control)의 개념이 있지만, 강화학습만큼 유연하지는 않다. 강화학습과 심층신경망 (deep neural network)를 결합할 시 아주 복잡한 대상의 액션도 묘사할 수 있으므로, 최적제어보다 더 복잡하고 다양한 대상체에 대해 유연한 제어가 가능하다. 능동진동제어에서 최적제어가 주로 사용되어왔고 관련된 연구는 매우 많다. 능동진동제어에 강화학습을 결합한 연구는 최근에 들어서야 이뤄지고 있는 걸로 보이며, 주로 랜덤한.. 2020. 12. 22.
GCP Compute engine에서 Cloud Run으로 이전하기 첫 선택은 GCP의 compute engine Invest Helper의 "데이터베이스인 mysql"과 "api 구축을 위한 python flask앱"을 google cloud platform (이하 GCP)의 compute engine으로 운영하고 있었다. 작은 compute engine에 mysql + flask를 동시에 올려서 운용하면, 비용적으로 큰 부담이 없을 거라는 판단에서였다. GCP를 선택한 이유도 작은 앱을 운용하는데 마이크로소프트의 Azure나 아마존의 AWS보다 성능 대비 비용이 저렴했다고 판단했기 때문이다 (GCP의 UI/UX가 직관적이고 documentation이 잘되있는 것도 한몫했다) 도커와 쿠버네티스에 눈을 뜨다 최근에 유행하는 마이크로서비스 패턴이 향후 서비스가 커졌을 때 .. 2020. 12. 21.
강화학습이란 지도 학습 (supervised learning) vs 강화 학습 (reinforcement learning)기계 학습에서 가장 널리 알려진 학습 형태는 "지도 학습"입니다 . 지도 학습을 간단히 설명하면 "지도자 (supervisor)"의 도움을 받아 학습하는 것입니다. 아버지의 도움으로 자전거타는 법을 학습하는 어린아이의 모습을 생각하면 됩니다. 이 때, 지도자인 아버지는 본인이 생각하는 "자전거타는 방법에 대한 정답"을 아이에게 가르칩니다. 반면, 강화 학습은 지도자없이 혼자 시행착오를 거치며 자전거타는 방법을 배우는 것입니다. 하지만, 가르쳐주는 사람이 없는데 어떻게 자전거타는 방법을 깨우칠 수 있을까요? 결국 순차적 의사결정 문제!강화 학습이 결국 풀고자하는 문제는 순차적 의사결정 (sequen.. 2020. 12. 2.
[C# 간단정리] Value Type vs. Reference Type C#의 모든 타입은 아래 4가지로 분류된다. 1. Value types 2. Reference types 3. Generic type parameters 4. Pointer types 이 중 가장 기본이 되는 Value와 Reference type에 대해 알아보자. Value type은 대부분의 내장 타입 (모든 숫자 타입, char type, bool type)과 struct나 enum으로 만들어진 커스텀 타입이다. Reference type은 모든 class, array, delegate, interface, string이다. 둘의 가장 큰 차이는 메모리 관리이다. 예제를 통해 알아보자. Value Types value type 인스턴스의 할당은 항상 인스턴스를 복사한다. public class Po.. 2020. 11. 17.
C# 언어의 특징 - "객체 지향"편 C#은 캡슐화 (encapsulation), 상속 (inheritance), 다형성 (polymorphism)을 아우르는 객체지향 패러다임을 풍부하게 구현한다. 통합 타입 시스템 (unified type system) C#의 모든 타입은 궁극적으로 공통된 기본 타입을 공유한다. 즉, 모든 타입은 동일한 기본 기능을 공유한다. 예를 들어, C#의 어떤 타입의 인스턴스든 ToString 메서드를 이용해 string으로 변환할 수 있다. 클래스와 인터페이스 (classes and interfaces) 기존 순수 객체지향 패러다임에는 클래스만 있다. 하지만 C#에는 더 다양한 타입들을 제공하며 이 중 하나가 interface다. Interface는 멤버들에 대한 구현 (implementation)을 제외하면 클.. 2020. 11. 17.
[sql] 컬럼당 하나의 특성만 저장하는 게 좋은 이유 관계형 모델에서 관계 (테이블)는 한 주제에 대해서만 기술해야 합니다. 즉, 동일한 주제를 가진 데이터를 하나의 테이블로 정리해야합니다. 속성 (컬럼)은 테이블의 주제를 설명하는 유일한 "특성"과 관련된 데이터입니다. 즉, 주제가 가지는 하나의 특성을 하나의 컬럼으로 만들면 됩니다. 컬럼에 하나의 특성만 저장되는게 좋은 이유는 뭘까요? 이 경우 검색을 하거나 값을 집계할 때 특성값을 분리하기 쉽기 때문입니다. 특히, 중요한 개별 특성에 대해 하나의 컬럼으로 분리하는 설계 상 훨씬 바람직합니다. 예를 들어, 아래의 테이블이 있다고 합시다. ID FullName FullAddress 1 이 순신 320-10, 경기도 A시 2 이 성계 340-20, 경기도 B시 3 이수 김 350-30, 충청남도 C시 이 테.. 2020. 11. 17.
[sql] 테이블에 기본키를 만들어야 하는 이유 테이블에 기본키 (primary key)가 있어야 할 이유가 무엇일까요? 가장 중요한 이유는 "특정 로우 (레코드)를 다른 로우들과 구별하기" 위해서입니다. 즉, 테이블 내 로우의 유일성을 보장하는 것입니다. 어떤 컬럼을 기본키로 설정하는 것이 바람직할까요? 1. 유일한 값 2. NULL값을 가질 수 없음 3. 값이 갱신될 일이 없음 4. 가능한 간단한 형태 (문자형보단 정수형, 여러 컬럼보단 단일 컬럼이 나음) 기본키를 통해 로우의 유일성을 확보하면 어떤 점이 좋을까? 반복적이고 쓸데없는 데이터가 쌓이지 않으므로, 이런 데이터에 의한 1) 쿼리 속도 저하 방지 2) 부정확한 정보 방지 가 됩니다. 복합키 (compound primary key)를 사용할 경우 단점이 있을까? 1. 두 개 이상의 컬럼을 .. 2020. 11. 16.
반응형