반응형
A2C까지는 정책과 가치를 동시에 학습하는 Actor-Critic 방법론의 기본을 익혔습니다. 그러나 A2C나 A3C, TRPO 같은 알고리즘들은 정책 업데이트 과정에서 제한이 명확하지 않아, 큰 갱신으로 인한 성능 퇴보가 발생할 수 있습니다.PPO(Proximal Policy Optimization)는 이를 개선하기 위해 다음과 같은 핵심 아이디어를 제안합니다.정책 업데이트 시, 새로운 정책과 기존 정책의 차이를 '클리핑(clipping)'하여, 정책이 한 번에 크게 바뀌지 않도록 제약이로써 안정적인 학습이 가능해지고, 복잡한 수학적 보증이 필요한 TRPO보다 구현이 단순하며, 널리 사용되는 SOTA급 RL 알고리즘으로 자리매김핵심 개념:Probability Ratio (r):r(θ) = π_θ(a|s..
2025년 크리스마스가 다가오고 있습니다! 시애틀은 이 시기에 특별한 매력으로 가득 차며, 가족, 연인, 친구들과 함께 즐길 수 있는 다양한 명소와 이벤트가 준비되어 있습니다. 이번 블로그 글에서는 시애틀에서 꼭 방문해야 할 크리스마스 명소들을 자세히 소개하겠습니다.1. 윈터페스트(Winterfest) at 시애틀 센터윈터페스트는 매년 11월 29일부터 12월 31일까지 시애틀 센터에서 열리는 대규모 겨울 축제입니다. 이 행사에서는 다양한 공연, 시장, 활동들이 펼쳐져 가족과 친구들이 함께 즐길 수 있는 분위기를 제공합니다.주요 프로그램:겨울 기차 & 마을: 아이들과 함께 즐길 수 있는 작은 기차와 마을이 마련되어 있습니다.라이브 공연: 다양한 아티스트들이 참여하는 공연이 매일 진행됩니다.홀리데이 조명:..
안녕하세요! 드디어 10편에 이르렀네요. 지난 글들에서 OpenCL 입문 과정을 하나씩 밟아나가며, 개발 환경 설정부터 간단한 예제, 이미지 처리, 성능 최적화, 디버깅과 프로파일링, 그리고 멀티 디바이스 활용까지 두루 살펴보았습니다. 이제는 전체 흐름을 정리하고, 앞으로 어떤 식으로 공부를 이어나갈 수 있을지 몇 가지 제안을 드리며 시리즈를 마무리하려 합니다.이번 글에서는 다음 내용을 다룹니다.지금까지 다룬 핵심 포인트 정리추가로 살펴볼만한 OpenCL 관련 주제들CUDA, SYCL, Vulkan Compute 등 다른 기술과의 비교 연구 방향커뮤니티, 문서, 온라인 강좌 등 자원 활용 팁1. 지금까지 다룬 핵심 포인트앞선 9개의 글에서 다룬 주요 내용을 간략히 정리해볼게요.개발환경 준비 & Hello..
이전 글에서는 퍼사드(Facade) 패턴을 모던 C++ 관점에서 재해석하며, 상속 없이 람다와 함수 합성으로 복잡한 서브시스템을 단순한 인터페이스로 감싸고, std::expected, std::format, coroutine, Ranges 등을 활용해 비동기 처리나 조건부 처리, 로깅, 에러 처리 등 다양한 요구사항에 쉽게 대응할 수 있음을 확인했습니다. 이번에는 구조적 패턴 중 플라이웨이트(Flyweight) 패턴을 다룹니다.플라이웨이트 패턴은 많은 수의 유사한 객체를 효율적으로 관리하기 위해 객체들이 공유할 수 있는 상태를 중앙에서 관리하는 패턴입니다. 예를 들어, 텍스트 처리기에서 각 문자를 개별 객체로 표현하면 메모리 낭비가 심하므로, 공유 가능한 폰트 정보나 형태 정보를 플라이웨이트 객체로 한 ..
이전 글에서는 데코레이터(Decorator) 패턴을 모던 C++ 관점에서 재해석하며, 상속 없이도 람다 합성을 통해 객체에 동적으로 기능을 추가하는 방법을 살펴봤습니다. 이번에는 구조적 패턴 중 퍼사드(Facade) 패턴을 다룹니다.퍼사드 패턴은 복잡한 서브시스템을 단일하고 단순한 인터페이스로 감싸, 클라이언트가 시스템을 쉽게 사용할 수 있게 하는 패턴입니다. 전통적으로는 Facade 클래스를 만들어 서브시스템 객체들을 정적 호출 계층으로 감싸았으나, 이는 서브시스템 변경 시 Facade 수정 필요, 에러 처리나 비동기 처리 시 복잡성 증가 등의 문제를 야기합니다.C++20 이상에서는 Concepts, 람다, std::function, std::expected, std::format, coroutine,..
이전 글에서는 컴포지트(Composite) 패턴을 모던 C++ 관점에서 재해석하며, std::variant와 std::visit를 통해 상속 없이 부분-전체 구조를 값 기반으로 표현하고, Ranges, coroutine, std::expected, std::format 등을 활용해 조건부 처리, 비동기 연산, 로깅 등 다양한 요구사항에도 쉽게 대응할 수 있음을 확인했습니다. 이번에는 구조적 패턴 중 데코레이터(Decorator) 패턴을 다룹니다.데코레이터 패턴은 객체에 동적으로 새로운 기능을 추가하기 위한 패턴이며, 전통적 구현에서는 컴포넌트를 상속한 데코레이터 클래스 계층을 통해 기능을 장식(Decorate)해야 했습니다. 그러나 이는 클래스 증가와 유지보수 어려움을 초래합니다. C++20 이상에서는 ..
여러분, 코딩 인터뷰를 준비하는 여정은 길고 험난할 수 있습니다. 알고리즘과 자료구조, 동적 프로그래밍, 그리디, 고급 문자열 알고리즘, 시스템 설계까지, 다양한 주제와 개념을 익히고 숙달해야 하는 과정에서 “정말 이게 다 필요할까?”, “어떻게 하면 더 효율적으로 준비할 수 있을까?”라는 고민을 하실 텐데요. 이 글에서는 그동안 살펴본 다양한 주제들을 총체적으로 정리하고, 추가 학습 방안과 참고 자료를 제안함으로써 여러분이 앞으로 더 체계적이고 자신감 있게 인터뷰 준비를 해나갈 수 있도록 도움을 드리려고 합니다.단순히 알고리즘 문제만 잘 푼다고 해서 합격이 보장되진 않습니다. 회사마다 문화나 요구사항이 다르고, 커뮤니케이션 스킬, CS 기본기, 시스템 설계 이해도 등 다양한 역량이 필요합니다. 그러나 ..
여러분은 반복적인 업무에 지친 적이 있으신가요? 매일 같은 일을 반복하며 "이 일을 자동화할 수 있다면 얼마나 좋을까?"라고 생각해 보신 적이 있으신가요? 그렇다면 Make를 소개해 드리고 싶습니다. Make는 이전에 Integromat으로 알려졌던 강력한 노코드 자동화 플랫폼입니다. 이 플랫폼은 여러분의 업무 방식을 완전히 바꿀 수 있는 잠재력을 가지고 있습니다.Make의 탄생과 발전Make의 이야기는 2012년, 체코의 프라하에서 시작되었습니다. 소프트웨어 개발자인 온드레이 크프리바와 그의 팀은 비즈니스 프로세스를 더 효율적으로 만들 수 있는 방법을 고민하고 있었습니다. 그들은 복잡한 코딩 없이도 다양한 앱과 서비스를 연결하고 자동화할 수 있는 플랫폼을 만들고자 했습니다. 이렇게 탄생한 것이 바로 I..
이전 글에서는 브리지(Bridge) 패턴을 모던 C++ 관점에서 재해석하며, 상속 기반 추상/구현 분리 없이도 람다, Concepts, std::expected, coroutine, Ranges, std::format 등을 활용해 추상과 구현을 유연하게 연결할 수 있음을 확인했습니다. 이번에는 구조적 패턴 중 컴포지트(Composite) 패턴을 다룹니다.컴포지트 패턴은 객체를 트리 구조로 구성해, 개별 객체(Leaf)와 복합 객체(Composite)를 동일하게 다룰 수 있게 하는 패턴입니다. 전통적으로는 Component 추상 클래스, Leaf, Composite 클래스 상속 계층을 정의했으나, 이는 클래스 증가와 유지보수 어려움을 야기합니다.C++20 이상에서는 std::variant, std::vis..
이전 글에서는 어댑터(Adapter) 패턴을 모던 C++ 관점에서 재해석하며, 기존 인터페이스를 원하는 다른 인터페이스로 변환하기 위해 상속 없이도 람다, Concepts, std::expected, std::format, coroutine, Ranges 등을 활용할 수 있음을 확인했습니다. 이번에는 구조적 패턴 중 브리지(Bridge) 패턴을 다룹니다.브리지 패턴은 추상(Abstraction)과 구현(Implementation)을 분리하여 둘을 독립적으로 확장 가능하게 만드는 패턴입니다. 전통적으로는 추상 클래스 계층과 구현 클래스 계층을 상속 기반으로 구분하고, 추상 클래스가 구현 객체를 참조하는 구조를 사용했습니다. 이 방식은 새로운 추상이나 구현 타입 추가 시 클래스 증가와 복잡성 상승을 초래합니..