不一样的房地产泡沫 – 高善文经济观察

中国房地产市场

那么我们来看中国的数据,这是中国房地产投资占整个经济比重的一个数据的结果,在这里的话我们剔除了土地购置费,使得房地产开发投资的口径与我们所使用的美国和日本的数据尽量可比。

我们看到中国房地产投资占整个经济比重的最高点出现在2013年前,在当时这一比例大概在12%左右,从2014年以后,中国房地产投资占整个GDP的比重,总体上的话就开始经历一个单边的波动下降的过程,到2022年的这一比例估计可能在7.6%左右,7.6%左右的房地产投资占比与日本80年代早期泡沫化之前的水平,与美国2003年之前的水平基本上是接近的,也许略低一些基本上是接近的,考虑到中国的城市化过程还不能说已经结束,考虑到中国的人均收入水平还处在一个相对较快的提升过程之中,城市化过程也还不能说完全已经结束,我们很难认为这样的房地产投资的占比和水平处在明显偏高的状态。

所以从这些数据来看,我们想说的是如果认为2022年我们经历了房地产泡沫的破灭,那么在2022年之前,我们应该看到房地产投资的迅速的放大,迅速的扩大,而泡沫的破灭需要去消化泡沫的扩张过程中所形成的很多的不平衡。但是在房地产投资的数据上,实际上的话在总量数据上,我们并没有看到在2021年之前房地产投资有异常的扩大。恰恰相反,他经历了持续时间的话,也大概有七八年的一个单边的波动下降的过程,而且的话它的绝对的水平考虑到中国城市化的进度的话,也不能说处在异常高的水平。

我们刚才已经看到从我们所使用的估计数据上来看,与投资的数据相一致,中国房地产的一个存货的最高峰出现在2013年前后,当时的投资也处在最高水平。2021年20年前后的话,整个的存货都处在相对偏低的水平。

换句话来讲,也许我们可以认为2019年以来,中国房地产投资的占比基本处在大体合理的水平附近,很难认为市场上积累了非常严重的从总量数据上来看,很难认为市场上积累了严重的供应过剩。

  • Key Takeaway:
  • 由房地产投资占GDP比例来看,比较纵向过去时间,及横向US&JP,中国房地产市场并未供应过剩。

我们还可以从另外一个角度的话来观察同样的数据,那么在这个数据上的话,我们计算的是房屋的价格弹性,新房的价格弹性。什么叫新房的价格弹性?我们知道在过去十四五年的时间里边,房地产市场经历了好几轮周期,经历了五轮周期。我们计算和比较了梅龙的房地产的下降过程,我们计算和比较了每一轮的房地产市场的下降过程,所谓的价格弹性是这样来计算的。

$$\epsilon = \frac{\Delta (每一轮周期70城房价格 P) 顶部 – 底部}{\Delta (商品房销售量 Q) 顶部 – 底部}$$

该比例小,说明他的倒数大 =\frac{\Delta Q}{\Delta P}。价格变化会量变化的影响。

首先我们来计算在房地产市场的下降过程之中,从顶部到底部交易量的下降,我们同时计算从顶部到底部新房价格的下降,然后我们把价格的下降与交易量的下降,计算一个比值,计算一个百分比的比值就得到一个弹性。

那么这些弹性我们认为它的含义在哪里?我们认为这一弹性的含义就像我们在这里所能看到的一样,我们已经知道2013年房地产投资占GDP的比重是最高的,我们所估算的房地产的存货也是最多的,但是2013年在价格下跌过程之中,这一弹性也是最大的。

价格的弹性,在一定程度上代表了市场的供应压力,代表了供应曲线的斜率,代表了市场上的供应压力。在2013年,我们知道各方面的供应压力都是最大的,但是在2013年的时候,新房的向下的价格弹性也是最大的。

以此来对比,在2021年以来的这轮房地产价格的下跌过程之中,尽管交易量的下跌是比较惊人的,交易量的下跌我刚才讲有疫情所带来的影响,疫情的话使得大家带来了很多心理的疤痕,也有的话房地产市场自身调整的影响,所以房地产市场的一个交易量的下降是很大的。

但是从弹性的角度来看,在2021年以来的这一轮房地产市场调整过程之中,它的弹性是过去15年之中最小的。现在的弹性比2017年小,比2009年小,比2007年内容的话也要更小。在价格层面上更小的弹性,我们认为也支持这种看法,就是市场上的供应过剩的压力,至少在新房市场上并不可能显著,市场上没有显著的供应过剩的压力,显示它与一般的房地产泡沫破灭相比,具有一些显著不一样的特征。

我们可以继续计算在二手房市场上的价格弹性,那么相对比较一样的特征是2013年在新房市场上有巨大的价格压力,价格弹性很大,在二手房市场上,2013年的时候,价格压力也很大,价格弹性也很大。

但是从弹性的角度来看,在2021年以来的这一轮房地产市场调整过程之中,它的弹性是过去15年之中最小的。现在的弹性比2017年小,比2009年小,比2007年内容的话也要更小。在价格层面上更小的弹性,我们认为也支持这种看法,就是市场上的供应过剩的压力,至少在新房市场上并不可能显著,市场上没有显著的供应过剩的压力,显示它与一般的房地产泡沫破灭相比,具有一些显著不一样的特征。

我们可以继续计算在二手房市场上的价格弹性,那么相对比较一样的特征是2013年在新房市场上有巨大的价格压力,价格弹性很大,在二手房市场上,2013年的时候,价格压力也很大,价格弹性也很大。

那么从二手房市场的价格弹性相比,今年以来的价格下跌的压力要更大一些,但是显著的低于2013年的水平,也许接近或者是略低于2007年的水平,比2017年的水平略高一些。换句话来讲,看起来新房市场的所承受的价格压力,供应压力比新房比二手房市场相对于新房市场的话看起来要略大一些。

一个额外的解释的话,也许是一部分的住户面对疫情,对于生意对资产负债表所带来的冲击,就像减持股票一样,被迫减持多余的房地产,从而在房地产市场上,除了相对新化市场造成了一些额外的压力,但是这些压力相对2013年相比并不突出,跟2007年的水平相比,也许差不多,放在历史上来看的话,也许就处在中位数附近的水平。

结论

那么做完这些比较,我们想做的结论是什么?尽管不少舆论认为2022年中国经历了房地产泡沫的破灭,这一破灭的话,对未来几年的经济增长都会形成持续的负面影响。但是我们从这些数据想得到的结论是,2022年中国房地产市场经历的应该不是一次泡沫的破灭,至少它不是一次典型的泡沫的破灭

实际上的话我们倾向于认为房地产市场2022年的房地产市场经受了两个因素的打击,而不是一个泡沫的破灭。

一个因素的话就是持续的疫情形成了疤痕效应,疤痕效应使得住户不敢买房,同时还在一定程度上去减持房地产市场的持有,在需求端造成了压力

另外一方面在2016年以后,房地产行业逐步开始流行所谓的高周转模式,高周转模式作为一种商业模式,具有巨大的内在脆弱性。高中的模式对于本质上是一种高杠杆模式,对于连续的融资,对于顺畅的融资,对债务工具的依赖非常的强烈。

所以但是由于这样或者是那样的原因,在2016年以后,房地产行业开始流行高周转模式,高周转的模式作为一种商业模式,具有巨大的内在脆弱性,那么高周转模式的内在脆弱性,由于房地产调控等原因的话被充分的暴露出来,迫使整个行业需要转变,自己的商业模式需要大幅度的修正。

而房地产行业在修正、在放弃高周转模式的过程之中,又遭遇了疫情的疤痕效应,在需求端所造成的冲击。

在这两种因素的条件下的话,我们我们认为的话在很大程度上回应了2022的话,房地产行业的状态销售非常的低,然后开工非常的低,投资大幅度的下降,然后全行业的话面临着相当普遍的不断蔓延的,在前一段时间以前比较普遍的不断蔓延的一个违约的压力。所以我们认为它不是一个由供应的过剩所推动的典型的房地产泡沫和泡沫的破灭,而是一个房地产行业经历了由于高周转的模式的内在脆弱性所带来的流动性危机。

这些流动性危机由于疤痕效应在房地产市场上的影响进一步加剧,那么我们看到最近一段时间以来的话,政府对房地产行业采取了非常强有力的一个扶持政策,对于一些大型的头部房企来讲,流动性压力出现了一些明显的缓解。

但是就像我们第一部分曾经讨论的那样,疤痕的消退,财务的疤痕、心理的疤痕、疤痕的消退需要时间意味着在需求端的房地产市场的需求的恢复需要较长时间,不会很快就出现微型的反弹。政府看起来也没有刺激房地产需求的愿望,在政治上的这种做法也很难受到欢迎,同时疤痕效应的持续存在,也使得民众很难迅速的去增加房地产市场的风险暴露。另外从高周转模式转换到更可持续的制造模式,也是需要较长时间。

尽管流动性危机在行业层面上正在经历明显的缓解,头部企业的流动性的状况有明显的改善,但是房地产行业从高周转模式,顺利的转换到实际上我个人认为是制造模式,也需要较长的时间,这意味着的话我们现在所看到的政策以及市场的调整,意味着房地产行业转入了一个有序的供应端的出清,房地产行业正在转入一个有序的供应端的出清,但是行业迅速经历需求的强劲和持续的恢复,房地产投资迅速经历非常强劲的上升,房地产新的商业模式迅速到位,可能在短期之内都不是特别的现实。

看得更长一些,我们这部分讨论的话所面临的比较大的问题是,由于房地产行业正在经历一个有序的供应端的出清,由于过去几年新开工,总体上处在相当低的水平,从宏观上的房地产投资占比,以及我们所估算的行业的存货压力来看,即使在现在房地产行业的意愿存货水平都处在偏低的水平,但是这一偏低的状态在未来无疑的话会继续维持,甚至会进一步强化。那么这些因素合并的结果是在较为长期的将来,房地产疤痕效应消除,房地产行业的商业模式转换完成以后,在市场的需求开始正常化以后,在一段时间里边也许会面临着市场供应不足的压力,而市场供应不足的压力在很多层面上,包括对房价等等的都会产生一定的不利的影响。

如果我们回顾2016年的三去一降一补之中的去产能,对很多的产能过剩行业所采取的强有力的去产能措施,我们就会知道当时的去产能措施在一段时间以后的话,都产生了这些行业价格非常强有力的上升。而且这些上升事后被证明的话是可维持的,因为很多被去除的供应再也没法回来了,相对去适应一个供求偏紧的局面,很多行业的产品价格经历了很大的上升,它的一个价格波动的中枢都上升到相对以前的更高一点的水平。

那么在中国的房地产市场来讲,我们刚才讲现在的房地产市场在过去几年并没有经历供应过剩的积累,相反从很多的数据上来看,供应是偏少的,但是在现在的市场条件下,无论是民众的疤痕效应,还是房地产企业的一个创业模式的调整,都意味着这个市场仍然处在一个相对非常弱的状态。但是这个市场未来总会正常化的,疤痕效应加以较长的时间总会消除的,然后房地产市场供给侧的出清也会逐步有序的完成,然后在那个时候房地产市场会是什么样的状态,也许站在现在我们都要提前的有所考虑。

  • Key Takeaway:
  • 1. 从 房地产投资占GDP的比重看,中国房地产并严重供给过于需求。
  • 2. 从 新房和二手房弹性看,可以得出类似的结果,供给可能并没有远高于需求。基于以上,房地产市场可能并不存在泡沫。
  • 3. 但是基于 二手房弹性的数据看,疫情的确给households的资产负债表带来重创。一个假设是:asset price decrease, but debts keep the same。于是households必须要卖房以补充equity。因此,疤痕效应随之而来。
  • 4. 2022年房地产市场衰落可能并不是因为泡沫。而是一下可能的两个原因:1. 疤痕效应。2. 房地产企业高周转的经营模式及其脆弱,在疫情带来需求减少且违约增加的情况下崩溃。房地产低迷是因为模式脆弱导致的流动性危机,而不是供给过剩带来的泡沫破灭。
  • 5. 房地产行业因此需要经历一个 由高周转模式 – 生产制造模式的调整,需要很长时间。且疤痕效应消退需要很长时间。但是,当以上问题被消化的过程结束时,可能会有供给小于需求。(类比2016年三去一降一补,去产能的过程)。

Ref

高善文经济观察

疫情留下的疤痕 – 高善文经济观察

  • 1. 疫情留下的疤痕
  • 2. 不一样的房地产泡沫
  • 3. 安全与发展:估值结构变化

疫情留下的疤痕

回顾这三年的疫情,应该说给经济和社会生活留下了很多的伤疤,有一些疤痕或者是伤疤,主要是在住户部门在很多的企业的资产负债表上,主要的问题是在过去几年,经济活动都不能够正常的展开,收入的不稳定性,空前的大收入的增速跟疫情之前相比,总体上也经历了比较明显的下降,在这样的条件下,住户和不少企业的资产负债表受到了不小的损害,权益科目出现了一定的问题,而这样的问题毫无疑问正在并且在未来需要花一些时间去进行修复。

疫情给一般民众的心理也多少留下了一些伤疤或者是一些疤痕,大家对于风险的容忍和承受能力相对于疫情之前相比可能出现了一定的下降。大家对未来收入的增长的确定性可得性以及未来收入增长能够维持在什么样的水平?

存贷差 代表着households对收入的预期

在这些层面上大家的预期呢也都变得更加保守,而这样的心理上的疤痕也影响了住户和企业的很多的经济行为,就像我们在这张图上可以清楚的看到的一样。

在这张图上在分母上,我们放的是居民部门的一段时间的收入水平,比如说一个居民户,然后在这个季度他有多少收入,在分子上我们放的是在居民户的资产负债表上,它存款的增量减去贷款的增量,居民户部门有一些收入,这些收入有一些当然用于消费了,但是也有一些的话多多少少的话通过货币基金,通过银行存款的都存储起来了。

$$ \frac{ \Delta (存款 – 贷款) }{一段时间内的收入_{存量}} $$

相当于 净贷款, Net Saving, 占收入的比例。存款科目上包括了它的储蓄存款,也包括了购买的货币基金,然后再扣减掉居民户出于购买房地产以及经营需要的话所获得的贷款。 ratio的 数值越大,相当于:净存款占一定期间收入的比例增大。如果净存款增加代表居民对安全的需求增加,那么此ratio说明了,在2022年居民对安全的需求急剧上升。

我们可以清楚地看到,在今年的3月份以来,相对于居民的收入而言,居民户所持有的存贷款或者轧差结束以后的存贷款的占比出现了幅度非常大的上升。即使在2021年年底的时候,这一比例在过去七八年的时间里边相对已经处在较高水平。但是进入2022年以来,这一比例在那样的水平上继续出现了单边的历史上少见的幅度非常大的上升。那么这样的资产负债表调整的变化显示了总体上来讲,居民户部门在资产配置上变得非常的保守,不愿意承担风险,对未来的预期的话变得更加悲观。

储蓄率,代表着households对收入的分配 Y – T = C + S; S = sY

那么我们再看第二个数据的话,是对居民户部门储蓄倾向的观察。所谓的储蓄倾向就是一段时间的一段时间里边,居民户的话获得了一定的收入,这些收入之中的一部分用于消费,比如说购买食品、购买烟酒、购买汽车等等一部分用于消费,那么把居民户的收入扣减掉它的消费以后,它的剩余项一般在经济学上定义为它的储蓄,所以它的储蓄可以是居民户所进行的投资,也可以是进行的房地产购买等等。

那么在这样的定义下,我们来观察居民户部门的储蓄率的变化。在这里我们这个报告了两个数据,红色的线使用的是入户调查数据,在入户调查数据之中,我们看到的情况是每一次比较明显的疫情冲击,都导致居民户部门的储蓄率有异常的上升。

这样的上升 一部分是因为部分的线下消费活动不可得,形成了被动的储蓄,另外一部分也可能来源于大家对未来收入的稳定性和可能性的信心下降,在这样的条件下,它需要有更多的储蓄。但是上面的蓝色的线是我们基于宏观的数据,基于宏观的国民收入,基于宏观的消费数据所反推出来的居民户部门的储蓄率。我们看到这两个数据有一定的差别,特别是在疫情以来,它们的走势的方向以及的水平应该说差别比较大,甚至是越来越大。

如果我们以宏观的数据估计为基础,总体上我们看到的是在趋势上居民户部门的储蓄率不断的上升,居民户部门的消费倾向是越来越低,他同样的收入它越来越多的用于储蓄,而不是用于消费。同时对储蓄起来的这些收入而言,更多的是放在存款、货币基金等高度稳定的科目上。用于购买房子,用于比如说持有权益资产等等的,从其他的一些数据来看,都经历了单边的大幅度的下降。

所以我们刚才所报告的这两个方面的数据,一个方面是居民户部门储蓄率的变化,另外一个的话是居民户部门资产负债表上金融科目存贷款科目的变化,这两个方面的数据清晰的向我们展示了几年的疫情,给居民户部门带来了比较明显的伤疤,这些伤疤有一些是心理性的,影响了对未来的预期。有一些的话是资产负债表的,是财务性的,特别是伤疤效应,在2022年以来有比较明显的上升,这些伤疤效应在这张图上有比较明显的上升。

而至于下跌的同时,在宏观上并没有出现明显的通货膨胀,明显的监管的收紧,明显的流动性的紧缩,明显的货币信贷利率的显著的上升,这些因素都没有。但是的话总体上权益市场包括房地产市场都出现了单边的幅度比较大的调整,而且在2022年的调整幅度异常大。那么由于三年的疫情所带来的疤痕效应,我们想说的是看起来即使在社会经济生活逐步恢复正常以后,疤痕的修复它的影响完全消除,可能也是需要一些时间的。

由于三年疫情,对于普通民众在财务上所造成的很多的伤害,那么为了重建资产负债表,为了重建它的权益科目,这个都是继续需要一定的时间来积累储蓄去进行修复的,普通的民众对未来的收入的增长重新建立更强的信心,在这样的条件下去逐步的降低自己的储蓄倾向,并且的话愿意持有更多的风险资产,而这样的心理的修复也是需要时间的。

  • Key Takeaways:
  • 存贷差增加,体现出 households 预期 Y下降
  • Saving Rate增加,体现 households对consumption需求下降,savings增加。
  • 因此,consumptions因以上双重原因叠加,下降。
  • 也因此,预期未来的增长,下降(预期变化是最重要的acyclical factor)
  • 疤痕 消失 需要时间

A CASE STUDY

那么从文献上对于自然灾害等因素,对于人类心理的影响来看,一般认为在人类经历了自然灾害以后,在心理上都会产生一些疤痕,这种疤痕在自然灾害消失以后的话会维持一段时间,尽管的话随着时间的流逝,它的影响在减弱,但是会维持一段时间,而且它突出的特点是对风险的容忍度在下降,他的行为的话变得更加保守,更加不愿意冒险,但是的话对这样的一般性的总结看起来似乎也有一些例外。

比如说2002年的时候,在德国的易北河岸发生了一次严重的洪水,洪水过去以后,一些学者就专门调查了受到洪水影响的居民的收入和开支行为。

那么基于可得的地理数据,在发生洪水的时候,在同样一个地理区域,并不是所有的家庭都受灾了。有一部分家庭受灾了,有一部分家庭没有受灾,这样的话在同样的地理区域,没有受灾的家庭的收入和开支行为,就可以作为一个很好的对照样本,去对比和研究受灾以后受到洪水冲击影响的家庭在洪水过去以后,他们的收入和开支行为。那么对于这样的一个样本的研究,显示在易北河洪水以后,实际上受到洪水影响的这部分家庭的收入和开支行为并没有受到明显的影响。

这个与我们一般想象的疤痕效应应该说存在存在一定的差异,但是这些学者倾向性的解释是德国有强大的社会保障体系,所以在这些地区发生洪水以后,这些民众所遭受到的损失由政府及时和足额的提供了补偿。

那么由于这样的政策干预,无论是在财务上还是在心理上,都没有在民众的生活之中留下明显的影响,他们的生活在洪水过去以后就迅速恢复正常。政策干预,相当于给household在预期及实际上都给予了补助。

在一定程度上,如果我们观察今年美国的储蓄率的变化,美国普通的住户部门储蓄率的变化。尽管美国也经历了非常大的疫情,但是今年以来的话,在美国住户部门的储蓄率的变动上,也看不到非常明显的疤痕效应。如果有很明显的疤痕效应,至少相对疫情之前相比,它的储蓄率应该更高。但是在我们所看到的数据之中,似乎在美国的住户部门,它的一个这个储蓄率相对于疫情之前可能还要更低一些,看不到明显的疤痕效应。而这样一个相对更低的saving rate,在一定程度上与美国经济数据的强劲以及通货膨胀压力之间的可能也是有一些关系的。

那么从易北河洪水的案例的研究来看,一个可能的原因也是在疫情肆虐的时候,美国政府针对住户提供的大量的补贴和转移支付,很好的保护了住户部门的财务状况,很好的保护了住户部门的心理上所受到的冲击,所以在疫情结束以后,他们的生活就迅速回到相对比较正常的状态。US Case,与德国洪水Case的政府政策弥补似乎得到一致的结果,政策支持帮助缓解疤痕。

但是从中国迄今为止的数据,以及从比较多数的对自然灾害条件下,人们行为的变化的研究来看,我们认为有理由相信在我们的经济社会生活逐步恢复正常以后,疤痕效应相对还会持续一段时间。也许的话随着时间的流逝,它会逐步的减退,随着疤痕效应的逐步的减退,储蓄倾向的逐步的下降,居民户部门逐步的相对变得更加愿意接受风险。这些变化在别的因素都不变的条件下,可能为权益市场也许还包括房地产市场提供了一个更稳定更强劲和更持续的基础。

  • Key Takeaway
  • 1. 疫情带来的疤痕效应,会在长期减少households对收入和消费倾向的预期。
  • 2. 疤痕效应在没有足够政策支持的情况下,会持续很长时间。

不一样的房地产泡沫

那么下来在第二个部分,我想跟大家分享一下我们对中国房地产市场泡沫的看法。2022年的中国房地产市场经历了幅度很大的调整,销售和新开工的下降幅度十分惊人,房价也出现了一定的下跌,房地产行业出现了非常广泛的违约压力。

很多人认为中国正在经历房地产泡沫的破灭,一些悲观的看法,基于对日本房地产泡沫破灭的观察,包括对于美国房地产泡沫破灭的观察,认为泡沫的破灭在一定程度上是不可逆的,并且它将会在未来较长时间里对于经济增长形成比较长期的负面影响。

我们知道日本的泡沫破灭以后经历了失去的10年20年,美国的房地产泡沫破灭以后,经济至少也经历了差不多5年时间的非常弱的增长。所以确实有不少人认为中国的话在2022年正在经历一个房地产泡沫的破灭,而这一破灭过程是不可逆的,并且将对未来几年的经济增长投下长长的阴影,我个人认为的话这样的看法不尽合适。

中国房地产容纳了too much wealth. If bubble collapses, both the market and the credibility sucks. Local Gov starts to stop people building houses in the rural area, which is equivalent to the gov enforces people buy rubbish apartments in ‘cities’, to stimulate demands and fill the financial gap for real estate firms. Extracting households’ wealth to save the financial burdens for firms and gov continues.

以下高善文从存货的角度分析了房地产市场的供求

接下来的话我来谈一谈我个人的话针对房地产市场的看法。首先我们跟大家分享一下我们这些年以来所追踪和估算的一个数据,这个数据的话是叫做在房地产行业之中所持有的非意愿的存货,非意愿的存货。所以的话它在0这一水平不是意味着存货是0,而是意味着房地产企业的存货与房地产企业意愿持有的水平是一致的。

那么从这一估计结果来看,毫无疑问在13、14年前后,房地产行业曾经积累了大量的超额的存货,但是在2018年以后,这一存货水平基本上就已经下降到完全正常的水平。从这一估计来看,2021年和2022年房地产行业所持有的非意愿的存货放在历史上来看都处在异常低的水平,它的非意愿存货放在历史上来看,都处在非常低的水平。

这些数据估计的意义在哪里?我们再来看。我们知道的话,所谓的房地产泡沫,它的形成通常有几个条件,第一个条件的话就是大量的民众和金融机构对未来至少是对房地产行业的未来抱有强烈、不可动摇的信心和信念,认为房价一直会涨,对房价和房地产市场抱有不可动摇的非常强烈的这个信念。

第二个的话就是整个的金融条件和金融环境异常的宽松,所以当他们试图去参与房地产市场的投机的时候,总是可以以比较低的资金成本获得贷款,在这样的条件下的话,大家都对房价具有很强的预期,又很容易获得贷款。这些因素合并在一起的话,推动了房地产泡沫的形成和房价的快速上升,房价的快速上升会刺激房地产供应的扩大。因为大家都觉得这个房子好,房价要涨,所以都来买房价就在涨。

那么面对房价的上涨,供应商房地产开发商的话,就能够和愿意在市场上提供更多的住房,在这样的条件下,房地产市场的供应的话就会大量增长。但是等到房地产泡沫破灭的时候,就会发生两个方面的问题,一个方面的问题是在泡沫化的过程之中,房地产市场有大量的异常的过剩的供应,就是在泡沫化的过程之中,房地产市场的经历的供应的扩大,从长期历史来看的话是不正常的,那么这些过剩的供应,这些不正常的供应,需要时间的来消除,需要时间来消化。为了消除和消化这些不正常的供应,就会对房地产的投资,对很多的相关行业的需求形成时间非常长的负面的影响。

那么第二个问题,就是在消化这些过程供应的过程之中,由于市场上在泡沫破灭以后存在明显的供过于求的现象,那么在泡沫破灭以后的话,房地产价格会经历下跌。房地产价格的下跌对银行的资产负债表,对住户的资产负债表形成了很大的损害,这些损害迫使银行回头要去修复自己的资产负债表,要去紧缩信贷,提高信贷发放的标准,要去筹集资本,甚至的话要去隐藏坏账,来修复自己的资产负债表。

对于住户来讲,在投机性的购买过程之中所积累的房地产的持有,在房价下跌的过程之中,由于它同时持有大量的银行的债务,在这样的过程之中,它的住户部门的资产负债表就会受到很大的损害,而住户部门资产负债表受到的损害,在泡沫破裂的过程之中,也是需要花很长时间来修复的。加杠杆投资房地产时,QT带来资产价格下砸,asset price going down, but debts keep the same,=> 资产负债表恶化,equity缩水。

我们刚才所讨论的这些泡沫形成和破灭过程之中,所重点想强调的是一个严重的造成持续影响的房地产泡沫,一定有一个关键的特征,就是从宏观上来看,房地产投资的异常扩大即便是在整个房地产行业里边没有持有过剩的存货,但是从宏观和总量上来看,一定有房地产投资的异常扩大,房地产投资的异常扩大,显示了房地产市场供应的扩大

随后在房地产泡沫破灭的过程之中,又经历了房地产投资的下跌,房地产投资的下跌毫无疑问对经济活动形成打击。房地产投资的下跌伴随的是房价泡沫的破灭,对银行和住户的资产负债表,甚至包括企业的资产负债表又形成很大的损害。那么我们用这样的模式来看,日本的房地产,日本在1985年之前,房地产投资占整个经济的比重大约在8%左右,在87年房地产市场开始泡沫化以后,这一比例迅速的从8%的上升到超过10%的水平,上升了超过10%的水平。而这些过程显示了在市场上房地产供应的扩大。

而1991年房地产泡沫破灭以后,日本的房地产投资就开始经历了一个长期的下跌过程。至于下跌过程的早期,可能主要反映的是对于过剩供应的消除过程,而这一投资占比下降的后期的变化,也许更多的与日本快速的老龄化存在更密切的联系,那么这是日本的数据。然后我们再来看美国的数据,美国的数据在一定程度上具有类似的特征,在2004年之前,美国房地产投资占整个GDP的比重差不多就在8%的水平。

  • Key Takeaway:
  • 1. Housing Bubble 的累积 <-> 一定伴随着 异常的 房地产投资增加。与存货并无相关。
  • 2. Housing Bubble Collapses <-> 是房地产去库存的过程。在1阶段,房地产投资增加,带来supply增加,直到supply远大于demand,bubble collapse。
  • 3. 人口结构等因素会影响 房地产库存的供求。

我们知道80年代的日本,2000年的美国都已经是一个人均收入很高度发达的经济体,也是早已经完成城市化的经济体。但是在那个条件下,我们看到他们房地产投资占整个GDP的比重还在接近8%的水平,这里的房地产有住宅,也有商业地产等等。

但是2004年以后,房地产投资的占比也开始出现了单边的上升,从8%上升到不到10%的水平,这些上升过程代表了供应的扩大,反映了在那几年的时间里边,美国房地产市场的泡沫化它上升了9%多的水平,以后,在这一位置的话停留到2007年到2008年。

随后随着泡沫的破灭,房地产投资占整个GDP的比重经历了时间较长的幅度非常大的下跌,这一下跌毫无疑问的部分是为了消化泡沫化过程之中的过剩,另外一方面它也反映了金融体系和住户的资产负债表所受到的压力。

那么直到2014、15年以后,美国的房地产市场看起来才基本稳定下来,但是一直到最近这两年,它的房地产占房地产投资占GDP的比重才勉强接近,可能还没有达到在2003年之前的水平勉强接近,但是看起来没有达到。

Ref

高善文经济观察

国企 & 私企

有个常见的说法是:国企比较有社会责任感,可以做很多私企觉得无利可图,不愿意做的事情。比如给某些偏远地区供电供水和邮政。

本质上,这种依然属于外部性。也就是从国家的角度来说,保证偏远地区的供电供水和邮政是重要的,但是私企自己又不是国家,所以不愿意去做。那么解决这个问题,其实和国企不国企并没有必然关系。

私企不愿意做是因为亏本,那么出于国家的某些需要(在这里是指的国民待遇的公平)通过国家补贴的方式,一样可以让私企来做。区别在于:私企做的时候补贴是显性的,是能看到从财政中拨款来进行补贴的;而国企做这些事情,补贴是隐性的,因为国企的利润就是政府的财政收入的一部分,所以依然相当于国家从财政收入中补贴。但是无论显性或者隐性,当其他条件不变的时候,这两者并无区别。

假定存在两个区域发达(D)和不发达(UD),提供服务的成本统一为 c。但是问题在于发达地区人们的支付意愿比较高,能从这项服务里面获得 u_d 的效用,而不发达地区的人们支付意愿比较低,能从这项服务里面获得 u_{ud} 的效用(这里如果反过来假设服务成本有区别也是一样的)。假定每个区域都有1个消费者,那么当企业无法区别定价的时候,企业有两个选择,如果只服务发达地区,那么价格可以定为 u_d ,而如果两个地区都服务,那么价格就只能定为 u_{ud} 。

在第一种情况下,企业利润为 u_d -c ,在第二种情况下,企业利润为 2(u_{ud}-c) 。那么当 c>2u_{ud}-u_d 的时候,企业就会只服务发达地区。

但是企业没有考虑的是,如果两个地区都服务,可以促进两个地区共同的经济发展,假如这个长期收益为 \pi_l ,那么显然当 \pi_l 足够大,大到弥补因为服务欠发达地区而造成的利润损失 u_d+c-2u_{ud} 的时候,国家的利益就和企业的利益不一致了。

这个时候如果政府想让私企服务不发达地区,那么就需要提供一个补贴,让私企至少能够赚的和现在一样多。这个补贴就是 u_d+c-2u_{ud}。 也就是私企因为要服务不发达地区而少赚的钱。而因为国家本身不产生任何的财富,这个补贴必然是从税款里面出。

这个时候,私企如果坚持不服务不发达地区,其获得的是: u_d -c 。而如果私企服务不发达地区,其收入是 2(u_{ud}-c) + u_d+c-2u_{ud}=u_{d}-c 。两边收益相等,私企自然愿意服务不发达地区了。

这个时候,国家和企业共同创造的价值是 \pi_l + 2(u_{ud}-c) 。欠发达地区获得了服务,发达地区获得了相对较低的价格,消费者还能剩下 u_d – u_{ud} 。所以社会总剩余就是 u_d + u_{ud}-2c+\pi_l 

那么国企呢?国企直接被命令服务于这两个地区,其总利润是 2(u_{ud}-c) ,消费者剩余和上面一样,国家同样实现了长期收益,所以社会总剩余还是 u_d + u_{ud}-2c+\pi_l 。国企虽然不需要补贴,但是收入本来就降低了,依然相当于是隐形的补贴出去了。

这两者是完全一样的。因为说到底,消费者在两个模型下得到了同样的服务,企业供应了同样的产出,效率是完全一样的。

私企有时候不愿意承担社会责任,因为花的是自己的钱,去做亏本买卖心不甘,但是只要提供足够的补贴,那么照样可以做;而国企承担社会责任,本身就已经包含了国家的补贴。资源不是无中生有的,国企亏本做事情,最后买单的依然是政府,而政府本身不产生财富。


但是根据我们的观察,在现实中,国企和私企确实存在区别。那么肯定是有不一样。不一样在什么地方呢?其实说到底,还是一个科斯定理的问题:交易成本。

在国企-私企上面这个简单的模型里面,里面假定了是没有任何交易成本,并且合同是一定执行的,那么这个时候产权本身就是不重要的。但是现实中显然不能满足这个条件。

首先是收税的成本。

假定国企和私企赚的利润都一样。因为政府本身就是国企的事实拥有者,那么可以直接的把国企的利润变成政府的收入。但是私企不一样,私企因为所有者和政府不同,那么就存在少交税的动机。要获得同样的收入,就需要雇佣人手查税。这样就存在了一个因为税务信息不对称,而产生的交易成本。

比如说,在上面的例子里面,政府给私企的补贴,是要靠收税收上来的。那么收税需要人手,需要雇员,还需要查账。如果存在一个 λ ,国家每收上来1的税,其消耗的资源是 (1+λ) ,那么这个就是补贴私企的过程中所带来的额外损耗。但是强行命令国企去做亏本生意,则相当于补贴原地生效,就不存在上面这个问题。

其次是多任务激励。

大的私企的经理人和国企经理人都存在道德风险的问题,这是所有者和经营者分离的企业所共有的问题。但是这个问题在国企和私企之间还是不一样的。

私企的目标相对比较明确,更看重利润,而解决道德风险(经理人偷懒、吃里扒外)的问题主要是通过合同设计,所谓重赏之下必有勇夫,在给出高额的激励合同之后,经理人和股东之间的利益还是能够达成某种程度上的一致。

但是国企的经营目标是多元的。有经济上的,有政治上的。有容易量化的,有不容易量化的。那么这个时候国企的经营者就更有动机去根据自己的利益,而非政府的利益来平衡自己所付出的努力。平常说的「形式主义」,为什么在国企会比较突出一些?因为当努力的程度不可观测的情况下,「形式」恰恰是可以量化的,更容易被观测到的。

这只是其一。其二就是国企的升职路径是排他的——私企在市场上竞争,虽然说也是互相争夺市场份额,但是彼此之间有一个正的外部性,那就是大家的努力可以共同把市场做大。但是国企的高管竞争的是行政职位,而行政职位是零和的。这意味着强的激励更容易导致管理人员之间的互相破坏。与此同时,因为多任务并行,对绩效的考核,和真实的效率之间就更容易出现误差。

假定有两个努力方向, 一个同时和绩效标准和真实效率有关,一个只和真实效率有关,但是和绩效考核标准关系不大。那么显然管理者就更容易只对着和绩效相关的地方去努力。

这些都是环环相扣的,正是因为国企需要同时兼顾市场和政令,所以就导致国企无法像私企那样给一个很高的激励体制给自己的经理人——因为这样只有两个可能:要么因为激励太强,导致国企的管理人员「不听话」了,要么因为激励给偏了,从而导致真实的效率还不如低激励的时候。

并且国企的经营者还面临着激励一致性不足的问题。私企无论谁当股东,都希望自己公司的市值越来越高,公司资产越来越多;但是国企经营者的行政领导往往是有任期的,而行政领导的任期和企业的经营周期并不重合。

不同的领导,甚至于同一个领导在不同的时期都可能会提出不同的要求,而这些要求也并不总是能够和企业利润最大化一致。而管理人员对这一点是有预期的。那么在制定长期规划的时候就会尽量的保守,以免领导更换之后,面临巨大的沉没成本要负责的问题。

最后还有一点是和科斯定理有关的,那就是在完成政府目标这方面,「国企」相比私企比较好用,背后所反映的是两种激励之间的权衡。国企对经营者的激励是官僚层级上的提升,也就是内部晋升,而私企对经营者的激励是市场报酬。如果内部晋升更加的好用,那么有两种可能的解释:

第一种可能的解释是内部组织非常的精炼和高效,所以激励更强,应该进一步扩大;第二种解释是说明整体外部市场的有效程度还很不够,摩擦力太大,以至于通过政策+补贴的市场化激励还不如内部的行政命令。

Reference

https://www.zhihu.com/question/301294803/answer/2812237308

近期经济观察

Credibility Affects How the Market Reacts

Preliminary: 货币政策 & 财政政策宽松,刺激经济短期,带来短期需求增加。M2 increases results in CPI increases. 但是:

  • 1. 长期随着价格水平增加,output会回到 Y^*.
  • 2. Inflation is nothing but a monetary phenomenon. Too much money chases too few goods and services, and then there would be inflation. 当货币超发,中期, Goods & Services的增加不足以匹配超发的货币时,通胀就产生了。
  • P.S. 中期与否,取决于市场对资金的需求。Unrealistic Case 1:若为长期,人们仍然预期,未来的goods n services足以匹配过多的money,可能也不会带来Price Level的增加(“Technological Growth” Case)。Unrealistic Case 2:也可能短期,甚至超短期,Private Sectors 嫉妒悲观,不相信任何public sector’s credibility,不吸纳任何money,不用任何moeny去买goods & service,哪怕有helicopter drops。那么此时,print money means create inflation directly,印钱会在超短期就带来通胀!

Based on the previous assumption: One factor that affects how the market reacts to QE is the Credibility of the Public Section.

Where the Credibility comes from? It’s from the Stability of a State, People’s expectations about future development, Demographic Structure, Gov’s Leverage Rate and Implicit Leverage rate, and so on. Because the Public sector can do Ponzi, and renew their debts indefinitely.

After Inflation

We assume that the public sector is credible and would not default, and the stability and social structures are still healthy. Then, QE result in too much money chasing too few goods & services, and inflation emerges.

After the inflation, how do people react?

  • 1. Pour money into the Heavy-capitalised assets, such as real estate and ‘equity’ shares. Then Asset Price increases to absorb extra money. The advantage is that goods and services (necessities) might not appreciate a lot. The disadvantage is that asset price increase is still not a healthy phenomenon, and systematic troubles accumulate because the bubble collapses one day. If the Bubble Collapses, the CB must reduce liquidity (money). Let’s move case 2 then.
  • 2. QT. However, QT might be too dangerous, because high financial costs would increase financial burdens for highly leveraged households and firms. Defaults and Disposal Sales increase. Asset’s price slips. The current financial markets are highly securitised and synthetic. A decrease in core assets would result in a series of dangerous chain reactions. Potential Systematic Risks come true.
  • 3. Technological Growth brings extra demands or something else, to absorb extra money.
  • 3. However, Technological Growth might be ambiguous, and is highly unlikely to happen, at least in the current situation. It is only a potential solution and is less likely to happen.
  • If case 3 not working, we have to move back to case 2.
  • Withdraw Liquidity (money), and kill inflation. Asset Prices, such as housing prices and stock prices, evaporate. In this case, necessities’ prices are less likely to be affected because they are rigid. Housing Price is a large component of the CPI basket, reducing the price of assets might be a possibility to reduce inflation. However, the gov might choose to keep a relatively sustainable and stable recession by maintaining the housing price. House has a special function, living. So, killing the equity market, in which stock prices are not that directly linked with household living, might be the best choice for the gov.

The first case might be more effective because problems are left to future generations.

中国市场

Not in the same economic cycle as the U.S. market. There could be a reverse in the short term and even in the mid-term because the pandemic policies are forced to be stopped. However, I don’t have a positive expectation toward the market in the long run for mainly two reasons. 1. leverage increase in the local government. 2. credibility decreases. Those two reasons interact to make the problem even more severe.

Gradient / Derivative in Python

By definition:

$$ \nabla f(x_1, x_2) =\frac{\partial f}{\partial x_1} + \frac{\partial f}{\partial x_1} $$

$$ \frac{\partial f}{\partial x_1} = \lim_{h\rightarrow 0}\frac{f(x+h)-f(x)}{h} $$

$$ \frac{\partial f}{\partial x_1} = \lim_{h\rightarrow 0}\frac{f(x+h)-f(x-h)}{2h} $$

  • Code:
func_1 = lambda x: x**2 +5
func_2 = lambda x: x[0]**2 + x[1]**3 +1
x_lim = np.arange(-5,5,0.01)
input_val = np.array([2.0,3.0])


class Differentiate:
    def __init__(self):
        self.h = 1e-5
        self.dx = None
        
    def d1_diff(self, f, x):
        fh1 = f(x+self.h)
        fh2 = f(x-self.h)
        self.dx = (fh1 - fh2)/(2*self.h)
        return self.dx
        
    def tangent(self, series, f, x_loc):
        """
        Return a Tangent Line, for ploting.
        """
        y_loc = f(x_loc)
        self.d1_diff(func_1, x_loc)
        b = y_loc - self.dx * x_loc
        y_series = self.dx * series + b
        return y_series
    
    # for f(x1, x2, x_3, ...)
    def dn_diff(self, f, x):
        grad = np.zeros_like(x)
        for i in range(len(x)):
            temp_val = x[i]
            x[i] = temp_val + self.h
            fxh1 = f(x)
            x[i] = temp_val - self.h
            fxh2 = f(x)
            grad[i] = (fxh1 - fxh2) / (2*self.h)
            x[i] = temp_val
            self.dx = grad
        return self.dx
    
    def gradient_descent(self, f, init_x, lr = 0.01, step_num = 1000):
        x = init_x   
        for i in range(step_num):
            self.dn_diff(f, x)
            x -= lr * self.dx
        return x

Optimiser

In the Neural Network, we optimise (minimise) the loss by choosing weights matrix, W and b.

$$ arg\max_{W, b} Loss $$

By taking the F.O.C., we get the gradient, \nabla. Then, we update weights by minus the learning rate times the gradient.

Here, I wrote some test algorithms to find how optimisers evolve.

Preparation

Let’s make some preparations and notation clarifications.

Notation:

  • Y is True,
  • T is the Estimate.

$$Y = XW + b + e$$

Let T = WX +b

$$ loss = e^T e $$

$$ loss = (Y-T)^T \cdot (Y-T) $$

$$= (WX+b+e-T)^T \cdot (WX+b+e-T) $$

$$ \frac{\partial Loss}{\partial W} = X^T (WX+b+e-T) = 2X^T (Y-T) $$

$$ \frac{\partial loss }{\partial b} = 1^T (WX+b+e-T) = 1^T (Y-T)$$

Just One More Thing We Consider Here!

We do not want the number of sample to affect loss function’s value, so we take averge, instead of sumation.

$$ \frac{\partial Loss}{\partial W} = \frac{2}{N}\ X^T (Y-T) \quad, \quad \frac{\partial loss }{\partial b} = \frac{1}{N} \ 1^T (Y-T) $$

Optimisers

Gradient Descent

$$ W_t = W_{t-1} – \eta \nabla_W $$

$$ b_t = b_{t-1} – \eta \nabla_b $$

, where \eta is the learning rate.

However, we may find that the Gradient Descent might not satisfactory, because gradients might not be available or vanished sometimes. Also, the process of gradient descent largely depends on the HyperParameter \eta. Some other methods of optimisation are developed.

Different Optimisers aim to find the optimal weights more speedy and more accurate. In the followings are how optimisers are designed.

Stochastic Gradient Descent – SGD

In SGD, the stochastic part is added to avoid model train full dataset, and avoid resulting in the problem of overfitting.

Momentum SGD

A momentum term is added.

  • Apply Momentum to the Gradient, \nabla.

$$\text{Gradient Descent:} \quad w_t = w_{t-1} -\eta g_w$$

$$ \text{Momentum:}\quad v_t = \beta_1 v_{t-1} + (1-\beta_1)g_w $$

In the Beginning of Iteration, v_0=0, so we amend it to be \hat{v_T}

$$ \hat{v_t} = \frac{v_t}{1-\beta_1^t} $$

,where \beta_1 assign weights between previous value and the gradient.

Replace the gradient g_w by the amended momentum term \hat{v}_t:

$$ w_t = w_{t-1} -\eta \hat{v}_t $$

P.S. Why we amend v_t by dividing 1 + \beta^t.

As v_t = \beta_1 v_{t-1} + (1-\beta_1)g_w, which is like a geometric decaying polynomial function. The difference is that w and g_w keep updating each period. Let’s assume there is no updating anymore, or in other word, model has converge. g_w = constant. \{ v_t \}_{t=0}^T would be,

$$ v_0 = 0 $$

$$ v_1 = (1-\beta_1)g_w $$

$$ v_2 = \beta_1 (1-\beta_1)g_w + (1-\beta_1) g_w $$

$$ v_3 = \beta_1^2(1-\beta_1)g_w + \beta_1 (1-\beta_1)g_w + (1-\beta_1)g_w $$

$$ v_n = \beta_1^{n-1}(1-\beta_1)g_w + … + (1-\beta_1)g_w $$

$$ v_n = (1-\beta_1)g_w (1+\beta_1 + … +\beta_1^{n-1}) $$

$$ v_n = (1-\beta_1)g_w \frac{1 – \beta_1^n}{1-\beta_1} =g_w (1-\beta_1^n)$$

Clearly, to amend v_n be like g_w, we need to divide it by 1-\beta_1^n, because of the polynomial ‘geometric’ form.

RMSprop

  • Apply a Transformation to the Gradient, \nabla.

$$\text{Gradient Descent:} \quad w_t = w_{t-1} -\eta g_w$$

$$ \text{RMS:}\quad m_t = \beta_1 v_{t-1} + (1-\beta_2)g^2_w $$

In the Beginning of Iteration, v_0=0, so we amend it to be \hat{v_T}, (remember there is a power t here).

$$ \hat{m_t} = \frac{m_t}{1-\beta_1^t} $$

,where \beta_1 assign weights between previous value and the gradient.

Add a square root of \hat{m}_t in the denominator:

$$ w_t = w_{t-1} -\eta \frac{g_w}{\sqrt{\hat{m}_t}} $$

Adam

Adam is nearly the most powerful optimiser so far. Adam is like a combination of Momentum and RMS, both \hat{m} and \hat{v} are added to adjust the speed of approaching to the optimal points, W^*, and b^*.

$$ w_t = w_{t-1} – \eta \cdot \frac{ \hat{v}_t }{\sqrt{\hat{m}_t}} $$

Three main hyper parameters are \eta = 0.01, \beta_1 = 0.9, and \beta_2 = 0.999.

Code

Thinking about ML

Learning from Deep Learning from Scratch. Let’s me share some thinking and ideas.

  • 1. Neural Network, multi-layer affine and activation function work great with non-linear transformation. Results are boosted to higher dimension.
  • 2. The combination between NN and loss minimisation make backward propagation applicable. Each little step of movements are the result of previous scholars’ research. That makes me feel closely how technologies and theories are developed, and how well statistics and mathematics are applied.
  • 3. Theories are inherited from previous research. Every year and every month, there are researchers from different countries, from different institutions, universities or high-tech firms, publish brilliant papers that are highly shocked and astonishing to further development.
  • 4. The current development of CS or ML are really top-notch and inspiring. Hardware, CPU & GPU & Cloud provide speedy efficiency of calculation, linear algebra works well on the Computer ; algorithms are innovative and update vastly. Hardware and Software together improve the ability of prediction.
  • 5. Although good for predicting, Deep Learning algorithms, NN, is still a Black Box, which means one could not explain the reason of getting the result. The bridge between Input <-> Output are weights, and weights are explained by backward propagation. However, is that pattern true? Is that a Correlation or Causality?

Deep Learning from Scratch

1. Perceptron

1.1 AND & OR & ‘N’ Gate

Linear Classification might be applied by AND & OR.

import numpy as np

def AND(x1, x2):
    x = np.array([x1,x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    temp = np.sum(w*x )+ b
    if temp<= 0:
        return 0
    else:
        return 1
    
def NAND(x1,x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7
    temp = np.sum(w*x)+b
    if temp <= 0:
        return 0
    else: 
        return 1

def Nand(x1, x2): # same as above
    return int(not bool(AND(x1,x2)))
    
    
def OR(x1,x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.2
    temp = np.sum(w*x) + b
    if temp <=0:
        return 0
    else:
        return 1

1.2 XOR Gate – Apply More than Two Perceptrons to Achieve Non-Linear Classification

def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1,x2)
    y = AND(s1, s2)
    return y
  • It has been proved that any functions could be represented by a combination of 2 perceptrons with sigmoid as the activation function.

Apply Multi – Layers of Perceptrons, we can achieve the simulation of any non-linear transformation. An important part is that Activation Function is necessary to be inserted into different layers. It can be easily proved that:

$$ W_2\Bigg( \big(W_1 X + b_1 \big) \Bigg) + b_2 \equiv W^* x + b^*$$

Multi-layer of Linear Transformation is still Linear Transformation. So, multi-layer of perceptrons becomes useless without Activation Function.

However, if activation function, in other word a non-linear transformation, is added between layers, then the neural network could mimic any non-linear function.

  • Therefore, what the Deep Learning is doing is to apply multi-layer perceptrons to mimic the pattern of a certain thing. Some key points are
    • (1) multi-layer perceptrons are named the Neural Network. Each adjacent layers are doing linear transformation WX + b and then apply a activation function, such as Sigmoid(x) = \frac{1}{1+e^{-x}};
    • (2) Update the weight matrix W and b, until the neural network could output an “optimal” result.
  • (1) How to define the layers and network structure, (2) how to evaluate the result is “Optimal” or not, and (3) how to find the weights are the main problems in Deep Learning.

2. Network Structure – Forward Propagation

Let’s start with the first Question. How to define the layers and network structure. Through the Network,

  1. we input Data, X, initially.
  2. Data are transformed by ( Perceptrons – “Affine”, Activation Functions ) multi-times, which are the multi-layers.
  3. Then, the results are passed through a Softmax function to reform results into percentages.
  4. Finally, a Loss is calculate.

$$ x \to f(.) \to a(.) \to \text{…} \to Softmax(.) \to Loss(.)$$

, where f(x) = xw + b

, where a(x) is the activation function.

, where Loss(x) is the loss function.

2.1 Affine – Linear Transformation

$$ f(X) = X \cdot W +b $$

2.2 Activation Function

  • ReLU, f(x) = max(x, 0
  • Sigmoid, f(x) = \frac{1}{1+e^{-x}}
  • tanh

There are some properties of activation function, such as symmetric to the zero point, differentiable, etc. Those details are not discuss here.

2.3 Softmax

$$ \vec{X} = (x_1, …, x_i, ..) $$

$$ Softmax(\vec{X}) = \vec{Y} = (…, \frac{e^{x_i}}{\sum e^{x_i}} ,…)^T $$

Inputs are reform to be percentages, and those percentages are sum to be one.

P.S.

$$ y_k = \frac{e^{a_k}}{\sum_{i=1}^{n}e^{a_i} } = \frac{C e^{a_k}}{C \sum_{i=1}^{n}e^{a_i} } $$

$$ = \frac{e^{a_k+ lnC} }{\sum_{i=1}^{n}e^{a_i + lnC} } $$

$$ = \frac{e^{a_k – C’} }{\sum_{i=1}^{n}e^{a_i – C’} } $$

为了防止溢出,事先把x减去最大值。最大值是有效数据,其他值溢不溢出可管不了,也不关心。

2.4 Loss Function

  • Cross Entropy, L = -\sum t_i \ ln(y_i) = – ln(\vec{Y}) \cdot \mathbf{t}^T
  • MSE, See “Linear Regression Paddle” note. E = \frac{1}{2} \sum_k (y_k – t_k)^2

3. Minimise Loss & Update Weights

We consider the “Optimal” weights are such that they can result in minimum loss. So, in other words, we aim to find w and b that can minimise the loss function.

How to Do It ?

$$ arg\min_{w, b} Loss $$

$$ \hat{w}: \frac{\partial L}{\partial w} = 0 ,\quad \hat{b}: \frac{\partial L}{\partial b} = 0$$

Remember, the pathway:

$$ x \to f(.) \to a(.) \to \text{…} \to Softmax(.) \to Loss(.)$$

To solve the `F.O.C, we need to apply the Chain rule backward, which is called the Backward Propagation.

By Chain Rule,

$$ \frac{\partial Loss(w)}{\partial w} = \frac{\partial Loss(.)}{\partial Softmax} \cdot \frac{\partial Softmax(.)}{\partial a} \cdot \frac{\partial a}{\partial f} \cdot \frac{\partial f}{\partial a} … \cdot \frac{\partial f}{\partial w} $$

Let’s Decompose each Part in the Following.

3.1 Loss

$$ \frac{\partial Loss(\vec{Y}, \vec{t})}{\partial \vec{Y}} $$

  • Cross Entropy

$$ L = -\sum t_i \ ln(y_i) = – ln(\vec{Y}) \cdot \mathbf{t}^T$$

$$\frac{\partial L}{\partial y_i} = – \frac{t_i}{y_i}$$

$$\frac{\partial L}{\partial \vec{Y}} = – \big(…,\frac{t_i}{y_i},…\big)^T$$

3.2 Softmax

$$ \vec{X} = (x_1, …, x_i, ..) $$

$$ Softmax(\vec{X}) = \vec{Y} = (…, \frac{e^{x_i}}{\sum e^{x_i}} ,…)^T $$

$$ \frac{\partial Softmax(\vec{X})}{\partial \vec{X}} = Diag(\vec{Y}) – Y\cdot Y^T $$


Deviation is as the Following,

https://blog.csdn.net/Wild_Young/article/details/121912675

$\frac{\partial Y}{\partial X}$:

$$Softmax(x) = \frac{1}{1+e^{-x}}$$

Let X be a vector with shape = (n,1), and
$Y = Softmax(X) $.

That means, for each element of y_i in Y

$$ y_k = \frac{-e^{x_k}}{\sum_i^N e^{x_i}} $$

So,

$$ \frac{\partial Y}{\partial x_k} $$

If j = i,

$$ \frac{\partial y_j}{\partial x_i} = \frac{\partial }{\partial x_i} \Bigg( \frac{e^{x_i}}{\sum e^{x_i}} \Bigg) $$

$$ = \frac{ (e^{x_i})’\sum e^{x_i} – e^{x_i} (\sum e^{x_i})’ }{\big( \sum e^{x_i} \big)^2} $$

$$ =\frac{e^{x_i}}{\sum e^{x_i}} – \frac{e^{x_i}}{\sum e^{x_i}} \cdot \frac{e^{x_i}}{\sum e^{x_i}}$$

$$= y_i – y_i^2 =y_i(1-y_i)$$

If j \neq i,

$$ \frac{\partial y_j}{\partial x_i} = \frac{\partial }{\partial x_i} \Bigg( \frac{e^{x_j}}{\sum e^{x_i}} \Bigg) $$

$$ = \frac{-e^{x_i} e^{x_j}}{(\sum e^{x_i})^2} $$

$$ =- \frac{e^{x_j}}{\sum e^{x_i}} \cdot \frac{e^{x_i}}{\sum e^{x_i}} $$

$$ = -y_j y_i $$

$$ \frac{\partial y_j}{\partial x_i}=y_i – y_i^2 \quad \text{,if $i = j$} $$


$$\frac{\partial y_j}{\partial x_i} = -y_j y_i \quad \text{,if $i \neq j$} $$

Therefore, for \frac{\partial Y}{\partial X}, we got the Jacobian matrix,

$$\frac{\partial \vec{Y}}{\partial \vec{X}} = Diag(Y) – Y^T Y$$

However, in the backward propagation of Softmax, we only need the diagonal, which is in the case of i = j.

$$ \frac{\partial y_i}{\partial x_i} = y_i-y_i^2 =y_i(1-y_i)$$

3.3 Loss (Cross-Entropy) and Softmax

There is a trick with the combination between cross-entropy-error and softmax.

The Cross-Entropy Loss function is,

, where \vec{Y_{log}}^T is apply log to each element of \vec{Y}, and then take transformation.

https://www.matrixcalculus.org

$$\frac{\partial L}{\partial \vec{Y}} = \vec{\mathbf{t}}^T \cdot Diag(Y_{1/Y}) $$

, where Y_{1/Y} is 1/y_i for each element of Y.

$$ \frac{\partial L}{\partial x_k } = \frac{\partial L}{\partial y_k}\cdot \frac{\partial y_k}{\partial x_k} $$

$$\frac{\partial L}{\partial x_k } =- \sum_i \frac{\partial }{\partial {y}_k} \bigg( t_i \ ln(y_i) \bigg) \cdot \frac{\partial y_k}{\partial x_k} $$

$$\frac{\partial L}{\partial x_k } =- \sum_i \frac{t_i }{{ y}_i} \cdot \frac{\partial {y}_i}{\partial x_k} $$

Plug in the derivatives of Softmax, \frac{\partial y}{\partial x}

$$\frac{\partial L}{\partial x_k } = – \frac{t_k }{{ y}_k}
\cdot \frac{\partial {y}_k}{\partial x_k} \sum_{i\neq k} \frac{t_i }{{ y}_i} \cdot \frac{\partial {y}_i}{\partial x_k} $$

$$ = -\frac{t_k }{{ y}_k}
\cdot {y}_k (1-{y}_k) \sum_{i\neq k} \frac{t_i }{{ y}_i} \cdot (- {y}_i {y}_k)
$$

$$ = – t_k (1-{y}_k) \sum_{i\neq k} t_i {y}_k
$$

$$ = – t_k \sum_{i} t_i \ {y}_k
$$

$$ = – t_k {y}k \sum{i} t_i \quad\text{by the tag, $t$, is sum to be 1}
$$

$$ \frac{\partial L}{\partial x_k } ={y}_k – t_k$$

So, we get \frac{\partial L}{\partial x_k} ={y}_k – t_k.

3.4 Affine

$$ \frac{\partial f}{\partial w} $$

$$ \frac{\partial f}{\partial b} $$

  • Backward

$$ \frac{\partial f}{\partial X} =\cdot \ W^T \quad \text{, Right Multiplied}$$

$$ \frac{\partial f}{\partial W} = X^T \cdot \ \quad \text{, Left Multiplied}$$

$$ \frac{\partial f}{\partial b} = \mathbf{1}^T \cdot \quad \text{, Left Multiplied} $$

4. Other Theoretical Details

  1. Batch: mini-batch and epoch for improving training accuracy.
  2. Weights Initialisation: Xavier – Sigmoid and tank, He – ReLU
  3. Weights Updating: SGD, Momentum, Adam, etc.
  4. Overfitting: Batches, Regularisation, Dropout.
  5. Hyperparameters: Bayes

See Chapter 6 of the book.

5. Code

See Attachment for the Code Realisation by purely Numpy.

Code and Books: http://82.157.170.111:1011/s/9D9BCBbCop6ERaD